我正在尝试打印行星名称,这些名称存储为字典中的键,但是我什么都没有,只是空间
这是我的代码:
class planets:
def __init__(self, aDict):
self.aDict = aDict
def __str__(self):
for key in self.aDict.keys():
print(key)
aDict = {"Sun": 1000, "Mercury": 10, "Earth": 60, "Mars": 50, "jupiter": 100}
p = planets(aDict)
答案 0 :(得分:5)
你需要实际打印p
和__str__需要返回一个字符串,例如:
def __str__(self):
return ' '.join(sorted(self.aDict, key=self.aDict.get))
aDict = {"Sun": 1000, "Mercury": 10, "Earth": 60, "Mars": 50, "jupiter": 100}
p = planets(aDict)
print(p)
答案 1 :(得分:0)
您需要在最后添加p.__str__()
。
class planets:
def __init__(self, aDict):
self.aDict = aDict
def __str__(self):
for key in self.aDict:
print(key)
aDict = {"Sun": 1000, "Mercury": 10, "Earth": 60, "Mars": 50, "jupiter": 100}
p = planets(aDict)
p.__str__()
<强>输出:强>
Mercury
Sun
Mars
jupiter
Earth
答案 2 :(得分:0)
__str__
“魔术方法”应该return
一个字符串,而不是自己进行任何打印。拥有这样一种不return
字符串的方法会产生错误。使用该方法构建字符串,然后返回该字符串。然后,您可以使用print(p)
“神奇地”调用该方法。例如:
>>> aDict = {"Sun": 1000, "Mercury": 10, "Earth": 60, "Mars": 50, "jupiter": 100}
>>> class planets(object):
... def __init__(self, aDict):
... self.aDict = aDict
... def __str__(self):
... return '\n'.join(self.aDict)
...
>>> print(planets(aDict))
Mercury
Sun
Earth
Mars
jupiter