class bread:
def __init__(self,grain,cost,number):
self.grain=(grain)
self.cost=int(cost)
self.number=int(number)
def price(self):
p=self.cost*self.number
print(p)
apple=bread("wholemeal",int(2),int(12))
print(apple.grain,apple.cost,apple.number)
print (apple.price)
在我输入这段代码后,我应该看到24,但我得到:
绑定方法bread.price为< main .bread对象位于0x05CC7430>>
我是oop的新手并开始尝试,但我找不到解决方案。
答案 0 :(得分:2)
您需要致电price
:
apple.price()
但是,使用property
:
class bread:
def __init__(self,grain,cost,number):
self.grain=grain
self.cost=cost
self.number=number
@property
def price(self):
return self.cost*self.number
apple=bread("wholemeal",2, 12)
print(apple.price)
答案 1 :(得分:0)
在这种情况下,您似乎不想处理类对象,但只想获得输出。你可以这样做:
class bread:
def __init__(self, grain, cost, number):
self.grain = (grain)
self.cost = int(cost)
self.number = int(number)
return self.price()
def price(self):
p = self.cost * self.number
print("%s : %d" % (self.grain, p))
bread("wholemeal", 2, 12)
作为一个初学者,你不应该过多担心像property
这样的事情,但要尽可能简单(和冗长)。另外,因为您正在为谷物类型输入,我猜你想要将它与值一起打印出来。
要解压缩我对代码所做的更改,作为一些基本编码实践的示例:
完成所有这些后,我们所要做的就是在__init__
内进行我们每次都要做的调用。祝你好运,玩得开心学习python!
答案 2 :(得分:0)
最后打印功能时,实际上需要调用该功能。目前,您只是在对象中获取方法的实例。但是你应该使用括号()来打印它时调用该函数。您也不需要打印函数调用来获取24,因为您已经在函数中打印了数字和成本的输出。但是,如果您确实要打印该函数,则可以在函数中使用返回值。以下是一个例子:
class bread(object):
def __init__(self, grain, cost, number):
self.grain = grain
self.cost = cost
self.number = number
def price(self):
price = self.cost * self.number
return price
apple=bread("wholemeal", 2, 12)
print(apple.price())
请注意,在代码结束时我们实际上在打印时调用了function()。然后,您将打印该函数的返回值。如果您只想在函数中打印该值,可以调用代码底部的函数而不像这样打印:
apple.price()
然后选择将print语句放在price方法中。你输出的代码是24:
24