我定义了一个有参数的对象。然后我创建了 3 个方法:
do_it1
将为对象的值加上 10do_it2
将为对象的值加上 20do_it3
可以接受一个参数,然后它应该在应用的内容上添加 30 加上其输入参数。到左侧的内容。
这就是我所做的
class MyClass():
def __init__(self,object_value):
self.object_value = object_value
def do_it1 (self):
return self.object_value + 10
def do_it2 (self):
return self.object_value + 20
def do_it3 (self,input_number):
self.input_number = input_number
return + 30 + self.input_number
这是输出
MyClass(5).do_it1()
返回 15,这是正确的
MyClass(4).do_it2()
返回正确的 24
MyClass(4).do_it2().do_it3(6)
返回 AttributeError: 'int' 对象没有属性 'do_it3' 而我期望 60 为 4 + 20 + 30 + 6
MyClass(1).do_it1().do_it2().do_it3(9)
返回 AttributeError: 'int' 对象没有属性 'do_it2' 而我期待的是 1 + 10 + 20 + 30 + 9 = 70
如何在同一类中的方法之上应用方法
最佳答案
您需要返回 self
(或其副本,通过 import copy
、copy.copy(self)
或类似方法)这个工作。
必须通过 object_value
属性访问累积值。
在代码中:
class MyClass():
def __init__(self,object_value):
self.object_value = object_value
def do_it1(self):
self.object_value += 10
return self
def do_it2(self):
self.object_value += 20
return self
def do_it3(self, input_number):
self.input_number = input_number
self.object_value += 30 + self.input_number
return self
MyClass(4).do_it2().do_it3(6).object_value
# 60
MyClass(1).do_it1().do_it2().do_it3(9).object_value
# 70
(方法 do_it3()
可能会也可能不会执行您想要的操作,您的代码无效,所以我只是猜测,但它不太相关)
关于python - 如何在对象上应用连续的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62627783/