当前位置: 首页 > 面试题库 >

传递变量,创建实例,自我,类的机制和用法:需要说明

竺勇
2023-03-14
问题内容

我只是将一个工作程序重写为一个类中的函数,然后一切都搞砸了。

首先 ,在__init__课程的部分中,我用声明了一堆变量self.variable=something

通过使用self.variable该函数,是否应该能够在类的每个函数中访问/修改这些变量?换句话说,通过声明self.variable我已经做了这些变量,在类范围内的全局变量对吗?

如果没有,我该如何处理自我?

其次 ,如何正确将参数传递给类?

第三 ,如何在类范围之外调用类的函数?

第四 ,如何class INITIALCLASS在另一个实例中创建的实例class OTHERCLASS,并将变量从传递OTHERCLASSINITIALCLASS

我想使用来自OTHERCLASS的参数来调用函数INITIALCLASS。到目前为止,我所做的是。

class OTHERCLASS():
    def __init__(self,variable1,variable2,variable3):
        self.variable1=variable1
        self.variable2=variable2
        self.variable3=variable3
    def someotherfunction(self):
        something=somecode(using self.variable3)
        self.variable2.append(something)
        print self.variable2
    def somemorefunctions(self):
        self.variable2.append(variable1)

class INITIALCLASS():
    def __init__(self):
        self.variable1=value1
        self.variable2=[]
        self.variable3=''
        self.DoIt=OTHERCLASS(variable1,variable2,variable3)

    def somefunction(self):
        variable3=Somecode
        #tried this
        self.DoIt.someotherfunctions()
        #and this
        DoIt.someotherfunctions()

我显然不明白如何将变量传递给类或如何处理self,何时使用变量以及何时不使用变量。我可能也不太了解如何正确创建类的实例。通常,我不了解类的机制,因此请帮助我并向我解释,就像我不知道(似乎我不知道)一样。或为我提供完整的视频或易读的教程。

我在网上找到的只是超级简单的示例,并没有太大帮助。或者只是非常简短的类和类方法实例等的定义。

如果您愿意,我可以将原始代码发送给您,但是它很长。


问题答案:

class Foo (object):
# ^class name #^ inherits from object

    bar = "Bar" #Class attribute.

    def __init__(self):
        #        #^ The first variable is the class instance in methods.  
        #        #  This is called "self" by convention, but could be any name you want.
        #^ double underscore (dunder) methods are usually special.  This one 
        #  gets called immediately after a new instance is created.

        self.variable = "Foo" #instance attribute.
        print self.variable, self.bar  #<---self.bar references class attribute
        self.bar = " Bar is now Baz"   #<---self.bar is now an instance attribute
        print self.variable, self.bar

    def method(self, arg1, arg2):
        #This method has arguments.  You would call it like this:  instance.method(1, 2)
        print "in method (args):", arg1, arg2
        print "in method (attributes):", self.variable, self.bar


a = Foo() # this calls __init__ (indirectly), output:
                 # Foo bar
                 # Foo  Bar is now Baz
print a.variable # Foo
a.variable = "bar"
a.method(1, 2) # output:
               # in method (args): 1 2
               # in method (attributes): bar  Bar is now Baz
Foo.method(a, 1, 2) #<--- Same as a.method(1, 2).  This makes it a little more explicit what the argument "self" actually is.

class Bar(object):
    def __init__(self, arg):
        self.arg = arg
        self.Foo = Foo()

b = Bar(a)
b.arg.variable = "something"
print a.variable # something
print b.Foo.variable # Foo


 类似资料:
  • 对于在带有@Given注释的方法中实例化的实例变量,我得到一个NullPointerException,如下面代码中的“test”所示: 我已经看到了各种示例(倒数第二个代码示例)和资源(这个答案的第一段),它们说这应该没问题,因为DI只有在尝试在步骤定义Java类之间共享状态时才是必要的,而不是在类本身中。 我有没有遗漏什么,或者有没有办法让这件事奏效?

  • 从性能还是从其他因素来看,哪一种方法更好? 假设我正在创建一个类,其中有一个方法,它接受2个值并将它们相加在一起。 是有两个实例变量来存储两个值,然后有一个方法来使用这些值更好,还是在调用方法时将变量作为参数传入更好? 或者仅仅使用静态方法更好,这样我就不需要在每次使用该方法时创建对象了?

  • 问题内容: 在lambda中,局部变量需要是最终变量,而实例变量则不需要。为什么这样? 问题答案: 字段和局部变量之间的根本区别在于,当JVM创建lambda实例时,将复制局部变量。另一方面,字段可以自由更改,因为对它们的更改也将传播到外部类实例(它们的范围是整个外部类,如Boris所指出的)。 考虑到匿名类,闭包和Labmdas的最简单方法是从可变范围的角度来看。想象一个为传递给闭包的所有局部变

  • 我想创建一个类的实例,该类的构造函数需要货币,但是我将货币传递到我创建它们的类的构造函数中。 每当我运行这个时,货币都是空的。到底是有什么办法,还是我需要改变它的工作方式

  • 本文向大家介绍Ruby类实例变量、类实例方法和类变量、类方法的区别,包括了Ruby类实例变量、类实例方法和类变量、类方法的区别的使用技巧和注意事项,需要的朋友参考一下 在Ruby中类实例变量、类实例方法和类变量、类方法的区别比较微妙,而且用法也有相当的区别。本文探讨一下他们的定义和基本的使用场景,以抛砖引玉...   一.类实例变量和类变量   类变量大家都很熟悉了,就是在类定义中用@@开头的变量

  • 问题 你想创建类变量和实例变量(属性)。 解决方案 类变量 class Zoo @MAX_ANIMALS: 50 MAX_ZOOKEEPERS: 3 helpfulInfo: => "Zoos may contain a maximum of #{@constructor.MAX_ANIMALS} animals and #{@MAX_ZOOKEEPERS} zoo keep