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'
有什么建议吗?
您得到此错误的原因是因为您的Bucket
方法被定义为实例方法,并且您试图将其称为类方法。
我建议你在这里阅读类方法和实例方法之间的区别。这也解释了self在这里的作用。
要创建Items
的实例,您需要调用 it:
items_obj = Items()
现在,你有一个Items
类的实例,现在可以正确地调用你的方法Bucket
:
items_obj.Bucket()
似乎你已经在你的Bucket
方法中调用了一个叫做cost
的方法。因此,假设这个方法只是返回成本,那么只需返回在Bucket
方法中调用self.cost(5)
:
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,您可以如上所示将类定义为:class Items:
。
此外,在代码中遵循良好的样式实践是很好的,请查看这里的样式指南:https://www.python.org/dev/peps/pep-0008/
试试这个:
class Items():
def __init__(self,cost):
self.cost = cost
def bucket(self):
return self.cost
items = Items(5)
print(items.bucket())