Anlamadığım küçük bir sorunum var.Python - neden yeni bir nesne örneği oluşturmuyor?
object.appendMethod()
Ve aslında SomeObject aynı örneğinde listeyi ekleyin:
def appendMethod(self, newInstance = someObject()):
self.someList.append(newInstace)
Ben nitelikler olmadan bu yöntemi çağırın:
Ben bir yöntemi var.
Ama bunun için değiştirirseniz:
def appendMethod(self):
newInstace = someObject()
self.someList.append(newInstance)
O nesnenin yeni instance'a her zaman olsun, ne fark eder?
class someClass():
myVal = 0
class otherClass1():
someList = []
def appendList(self):
new = someClass()
self.someList.append(new)
class otherClass2():
someList = []
def appendList(self, new = someClass()):
self.someList.append(new)
newObject = otherClass1()
newObject.appendList()
newObject.appendList()
print newObject.someList[0] is newObject.someList[1]
>>>False
anotherObject = otherClass2()
anotherObject.appendList()
anotherObject.appendList()
print anotherObject.someList[0] is anotherObject.someList[1]
>>>True
görüyorum ama yaklaşık * * varsayılan değerler oluşturulduğunda olduğunu. @tomek, her işlevin, '__defaults__' özniteliğinde varsayılan değerlerinden ** tuple' ** kaldığını unutmayın. Ama bu ne anlama geliyor? Elbette, tuple'lar değişmez fonksiyonlar olduğundan * her çağrıldığında varsayılan bir değer oluşturamazlar, dolayısıyla varsayılan değer sadece * bir kez * fonksiyonda * tanım * oluşturulur. 'someObject' işlevini' def func(): print ("çağrılıyor") 'gibi bir işlevle değiştirmeyi deneyin ve bu işlevin ne zaman çağrıldığını görün. – Bakuriu
Bu iyi bir soru. C++ 'dan geldiğimde, fonksiyonun fonksiyon tanımından ziyade fonksiyon tanımından değerlendirilen ikinci sınıf nesneler olduğu arazi beni kesinlikle şaşırttı. – Shashank