Jestem całkiem nowy, python, i zauważyłem te posty: Python __init__ and self what do they do? i Python Classes without using def __init__(self)Przydatność def __init __ (self)?
Po zabawy z nim, jednak zauważyłem, że te dwie klasy dać najwyraźniej odpowiednik WYNIKI
class A(object):
def __init__(self):
self.x = 'Hello'
def method_a(self, foo):
print self.x + ' ' + foo
(od this question)
i
class B(object):
x = 'Hello'
def method_b(self,foo):
print self.x + ' ' + foo
Czy istnieje jakaś różnica między tymi dwoma? Lub, bardziej ogólnie, czy zmiana nieodłącznie dotyczy atrybutów klasy? W dokumencie the documentation wspomniano, że __init__
jest wywoływane podczas tworzenia instancji. Czy to oznacza, że x
w klasie B
jest ustanowiony przed instancją?
+1 Nie zapomnij, że skoro zajęcia są obiekty można zmienić atrybut klasy, sam, w dowolnym czasie. 'class A: pass; A.lst = list (range (6))'. – kojiro