class Items():
def Bucket(self):
self.cost(5)
print(Items.Bucket()) # I want this to return the cost of the item
我想要打印列出项目的费用。在这种情况下,我希望它返回一个桶5.现在它返回...
TypeError: Bucket() missing 1 required positional argument: 'self'
有什么建议吗?
答案 0 :(得分:2)
您收到此错误的原因是您的Bucket
方法被定义为实例方法,并且您尝试将其称为类方法。
我建议你在这里阅读this关于类方法和实例方法之间的区别。这也将解释 self 如何在这里发挥作用。
要制作Items
的实例,您需要调用:
items_obj = Items()
现在,您拥有Items
课程的实例,现在可以正确调用您的方法Bucket
:
items_obj.Bucket()
您似乎已经在名为Bucket
的{{1}}方法中调用了一种方法。因此,假设此方法只返回成本,那么只需返回在cost
方法中调用self.cost(5)
:
Bucket
所以,你应该作为最终的解决方案:
def Bucket(self):
return self.cost(5)
注意:定义班级时不需要class Items:
def Bucket(self):
return self.cost(5)
items_obj = Items()
print(items_obj.Bucket())
。假设您使用的是Python 3,则可以将您的类定义为:()
,如上所示。
此外,通过在此处查看样式指南,最好在代码中遵循良好的样式练习:https://www.python.org/dev/peps/pep-0008/
答案 1 :(得分:0)
试试这个:
class Items():
def __init__(self,cost):
self.cost = cost
def bucket(self):
return self.cost
items = Items(5)
print(items.bucket())