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

Python 如何使def语句返回self(…)中的对象,python,class,self,Python,Class,Self,我想用它来打印所列项目的成本。在这种情况下,一个桶,我希望它返回5。现在它回来了 class Items(): def Bucket(self): self.cost(5) print(Items.Bucket()) # I want this to return the cost of the item 有什么建议吗?试试这个: TypeError: Bucket() missing 1 required positional argument: 'self' 出

我想用它来打印所列项目的成本。在这种情况下,一个桶,我希望它返回5。现在它回来了

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

print(Items.Bucket()) # I want this to return the cost of the item
有什么建议吗?

试试这个:

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

出现此错误的原因是您的
Bucket
方法被定义为实例方法,并且您试图将其作为类方法调用

我建议您在这里阅读类方法和实例方法之间的区别。这也将解释自我是如何在这里发挥作用的

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

现在,您有了
Items
类的实例,现在可以正确地调用方法
Bucket

items_obj = Items()
似乎您已经在调用名为
cost
Bucket
方法中的一个方法。因此,假设此方法只返回成本,然后在
Bucket
方法中返回调用
self.cost(5)

items_obj.Bucket()
因此,作为最终解决方案,您应该:

def Bucket(self):
    return self.cost(5)
注意:定义类时不需要使用
()
。假设您使用的是Python3,您可以将类定义为:
classitems:
,如上所述


另外,通过查看此处的样式指南,在代码中遵循良好的样式实践也是很好的:

Items().Bucket())
。您必须首先实例化
项。或者将
Bucket
重新定义为
def Bucket():
。注意:您的Bucket不会返回任何内容,因为没有
return
语句。谢谢您给了我一个主意。执行此操作-类项目():def Bucket():cost=int(5)返回成本打印(Items.Bucket())谢谢,这真的很有帮助
def Bucket(self):
    return self.cost(5)
class Items:
    def Bucket(self):
        return self.cost(5)

items_obj = Items()
print(items_obj.Bucket())