Quand je lisais l'open source, il y avait une méthode qui était «return self», et je ne savais pas ce qui se passerait si je faisais cela, alors prenez note.
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'
Ne pas retourner soi
dans les méthodes de classe Une erreur se produit lors de la tentative de création d'une chaîne de méthodes sur une instance de Car2
.
Si vous faites return self
, vous pourrez créer une chaîne de méthodes.
Avec car1
, vous pouvez connecter fill () ʻet
drive () ʻ autant de fois que vous le souhaitez.
Recommended Posts