如何使def语句返回self(…)中的对象


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())

相关内容

最新更新