我已经定义了一个对象,它将有一个参数。然后我创建了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
属性访问代码:
(方法
do_it3()
可能做也可能不做您想做的事情,您的代码无效,所以我只是猜测,但它不太相关)在这个语句中,您调用init,它创建了一个MyClass self.object\u value=5的对象,然后调用它的do\u it1()
在第二个示例中,您执行相同的操作,但是您创建了一个self.object_value=4的对象,然后调用.do_it2()
在最后一个例子中,它返回一个错误,因为您创建了self.object_value=4的对象MyClass,然后调用do_it2(),它返回一个Int值,因此最终将得到Int.do_it3(6),这会引发一个错误,因为Int对象没有方法do_it(3)。MyClass(4).do_it2()的所有返回值都是int,然后调用的方法不是返回对象的方法
我希望这有帮助。如果你不明白,请告诉我
由于这些方法返回
int
,因此只能对其结果调用int方法您的调用
MyClass(4).do_it2().do_it3(6)
相当于24.do_it3(6)
,这没有多大意义相关问题 更多 >
编程相关推荐