获取对象的值,而不是其在内存中的位置



我正在学习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)

您的Dado.valorGeraDado.dado方法只打印骰子的值,它们实际上不返回它,相反,使它们使用return语句返回值:

Dado.valor:

def valor(self):
return self.__valor

GeraDado.dado:

def dado(self):
return self.__dado.valor()

两个小建议:

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

最新更新