Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建python类的实例&__初始化___Python_Oop_Class - Fatal编程技术网

创建python类的实例&__初始化__

创建python类的实例&__初始化__,python,oop,class,Python,Oop,Class,我想要一个有一些类变量的类,并且有对这些变量执行操作的函数——但是我想要自动调用这些函数。有更好的方法吗?我应该为此使用init?如果这是一个nooby问题,很抱歉-我对Python非常陌生 # used in second part of my question counter = 0 class myClass: foo1 = [] foo2 = [] def bar1(self, counter): self.foo1.append(co

我想要一个有一些类变量的类,并且有对这些变量执行操作的函数——但是我想要自动调用这些函数。有更好的方法吗?我应该为此使用init?如果这是一个nooby问题,很抱歉-我对Python非常陌生

# used in second part of my question
counter = 0    

class myClass:
    foo1 = []
    foo2 = []

    def bar1(self, counter):
        self.foo1.append(counter)
    def bar2(self):
        self.foo2.append("B")

def start():
    # create an instance of the class
    obj = myClass()
    # I want the class methods to be called automatically...
    obj.bar1()
    obj.bar2()

# now what I am trying to do here is create many instances of my class, the problem is
# not that the instances are not created, but all instances have the same values in 
# foo1 (the counter in this case should be getting incremented and then added
while(counter < 5):
    start()
    counter += 1
#用于我问题的第二部分
计数器=0
类别myClass:
foo1=[]
foo2=[]
def bar1(自身,计数器):
self.foo1.append(计数器)
def bar2(自身):
self.foo2.append(“B”)
def start():
#创建类的实例
obj=myClass()
#我想自动调用类方法。。。
对象bar1()
对象bar2()
#现在我要做的是创建我的类的许多实例,问题是
#并不是说没有创建实例,而是所有实例在中都具有相同的值
#foo1(在这种情况下,计数器应该先递增,然后再添加
而(计数器<5):
开始()
计数器+=1

那么,有没有更好的方法来实现这一点?并导致我的所有对象都具有相同的值?谢谢!

foo1和foo2是类变量,它们由所有对象共享

如果希望每个对象的
foo1
foo2
都不同,则类应如下所示:

class myClass:
    # __init__ function will initialize `foo1 & foo2` for every object
    def __init__(self):
        self.foo1 = []
        self.foo2 = []

    def bar1(self, counter):
        self.foo1.append(counter)
    def bar2(self):
        self.foo2.append("B")

foo1和foo2是类变量,它们由所有对象共享

如果希望每个对象的
foo1
foo2
都不同,则类应如下所示:

class myClass:
    # __init__ function will initialize `foo1 & foo2` for every object
    def __init__(self):
        self.foo1 = []
        self.foo2 = []

    def bar1(self, counter):
        self.foo1.append(counter)
    def bar2(self):
        self.foo2.append("B")

foo1和foo2是类变量,它们由所有对象共享。如果您希望它们对所有对象都是单独的,请创建
\uuuuu init\uuuu
方法并在函数Thank-编辑的函数中初始化它们。因此,如果它们在
\uuuu init\uuuuu
中,并且我创建了obj1,然后创建了obj2,那么这两个变量都将设置为
\uuuuu init\uuuuuu
,就好像它们只是在类定义中一样,obj1.doSomething()更改obj2将使用的变量?(假设doSomething()更改类变量)--注意:下面给出了答案:请参见@avasalfoo1和foo2是类变量,它们由所有对象共享。如果您希望它们对所有对象都是单独的,请创建
\uuuuuuu init\uuuuu
方法并在函数Thank-编辑的函数中初始化它们。因此,如果它们在
\uuuuuuu init\uuuu
中,我创建obj1,然后创建obj2,两者都将l将变量设置为
\uuuuu init\uuuuu
中的任何变量,就像它们只是在类定义中一样,obj1.doSomething()更改obj2将使用的变量?(假设doSomething()更改类变量)--注意:下面的回答是:see@avasalThank you very-清除我对
\uuuuu init\uuu
方法的困惑。非常感谢-清除我对
\uuu init\uu
方法的困惑。