如何使 def 语句 return 成为 self(...) 中的对象

How to make def statement return an object within a self(...)

class Items():
    def Bucket(self):
        self.cost(5)

print(Items.Bucket()) # I want this to return the cost of the item

我想要打印所列项目的成本。在这种情况下,我想要一个桶 return 5。现在它 returns...

TypeError: Bucket() missing 1 required positional argument: 'self'

有什么建议吗?

试试这个:

class Items():
    def __init__(self,cost):
        self.cost = cost
    def bucket(self):
        return self.cost

items = Items(5)
print(items.bucket())

您收到此错误的原因是因为您的 Bucket 方法被定义为 实例 方法,而您正试图将其作为 class方法。

我建议您阅读 this 此处了解 class 方法和实例方法之间的区别。这也将解释 self 如何在这里发挥作用。

要创建 Items 的实例,您需要 调用 它:

items_obj = Items()

现在,您拥有 Items class 的实例,现在可以正确调用您的方法 Bucket

items_obj.Bucket()

您似乎已经在 Bucket 方法中调用了一个名为 cost 的方法。因此,假设此方法只是 return 的成本,那么只需 return 在您的 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())

注意:定义 class 时不需要 ()。假设您正在使用 Python 3,您可以将 class 定义为: class Items: 如上所述。

此外,最好在代码中遵循良好的风格实践,方法是查看此处的风格指南:https://www.python.org/dev/peps/pep-0008/