我正在用 Python 學習 OOP,我正在制作一個有 5 個骰子的游戲。我制作了Dado代表我的骰子的GeraDado物件和實際創建Dado物件的物件。如果我創建了一個物件,例如d1 = GeraDado()我可以使用該d1.valor()方法列印其值,但是如果我嘗試將其值附加到串列或字典中,它會回傳None. 如果我這樣做,print(d1)它會回傳物件在記憶體中的位置而不是值。我怎樣才能讓它回傳d1 = GeraDado()值而不是使用d1.valor()只在螢屏上列印值的方法?
from random import randint
class Dado:
def __init__(self, valor):
self.__valor = valor
def valor(self):
print(self.__valor)
class GeraDado:
def __init__(self):
self.__dado = Dado(randint(1,6))
def dado(self):
self.__dado.valor()
d1 = GeraDado()
print(d1)
uj5u.com熱心網友回復:
您的Dado.valor和GeraDado.dado方法只列印骰子的值,它們實際上并不回傳它,而是使用以下return陳述句使它們回傳值:
Dado.valor:
def valor(self):
return self.__valor
GeraDado.dado:
def dado(self):
return self.__dado.valor()
uj5u.com熱心網友回復:
兩個小建議:
class Dado:
# ...
def valor(self):
return self.__valor
# 1. return stuff!
# Don't fall in love with print. It's just a debugging side-effect
class GeraDado:
# ...
def dado(self):
return self.__dado.valor() # 1. again: return!
# 2. implement a __str__ method.
# This is your class's representation that is used by print
def __str__(self):
return str(self.dado())
>>> d1 = GeraDado()
>>> print(d1)
1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/337192.html
上一篇:在Python中回傳一個類的實體
