Als ich Open Source las, gab es eine Methode, die "Selbst zurückgeben" war, und ich wusste nicht, was passieren würde, wenn ich das tun würde. Machen Sie sich also eine Notiz.
class Car1(object):
def __init__(self):
self.miles = 0
self.gas = 0
def drive(self, d):
self.miles += d
self.gas -= d
return self
def fill(self, g):
self.gas += g
return self
class Car2(object):
def __init__(self):
self.miles = 0
self.gas = 0
def drive(self, d):
self.miles += d
self.gas -= d
def fill(self, g):
self.gas += g
if __name__ == '__main__':
car1 = Car1()
car1.fill(100).drive(50)
print 'car1 miles', car1.miles
print 'car1 gas', car1.gas
car2 = Car2()
car2.fill(100).drive(50)
print 'car2 miles', car2.miles
print 'car2 gas', car2.gas
car1 miles 50
car1 gas 50
Traceback (most recent call last):
File "chain.py", line 38, in <module>
car2.fill(100).drive(50)
AttributeError: 'NoneType' object has no attribute 'drive'
Geben Sie in Klassenmethoden nicht "self" zurück. Beim Versuch, eine Methodenkette für eine Instanz von "Car2" durchzuführen, tritt ein Fehler auf.
Wenn Sie "self zurückgeben", können Sie eine Methodenkette erstellen.
Mit car1
können Sie fill ()
unddrive ()
beliebig oft verbinden.
Recommended Posts