【发布时间】:2018-10-03 14:25:05
【问题描述】:
我正在尝试通过使用类 Rooms() 中的字典来访问类 Castle()。
我不明白如何只访问 room1 或 room2 而不会意外访问这两个房间?
我已经用尽了所有我能想到的途径,但我确定这可能是我想念的非常简单的东西。提前致谢!
class Castle():
def enter():
print("This is castle")
class Door():
def enter():
print("This is door")
class Rooms():
def dictionary():
items = {
'room1': Castle.enter(),
'room2': Door.enter()
}
Rooms.dictionary()['room1']
打印出来:
This is castle
This is door
Traceback (most recent call last):
File "C:\Users\James\Python\03_ZedShaw\test.py", line 22, in <module>
Rooms.dictionary()['room1']
TypeError: 'NoneType' object is not subscriptable
【问题讨论】:
-
您忘记从
dictionary返回items。此外,enter方法不会返回任何内容,因此items中的所有内容都将是None。您可能想重新审视 Python 函数的工作原理 -
另外,
dictionary缺少参数或@staticmethod装饰器。无论如何,为什么dictionary不只是...字典? -
我正在尝试使用基本上所有内容的类创建一个游戏(这对我来说似乎很愚蠢,但它是 Learn Python the Hard Way ex43 练习的一部分)。我假设它,所以我习惯于理解继承是如何工作的等等,但老实说,它只是让一切变得超级复杂。我尝试添加 return 以输入方法和项目,但我得到了相同的结果。我已经尝试解决这个问题 3 天了,哈哈……我已经完全不知道发生了什么
-
FWIW,SO Python 聊天室常客do not recommend LPTHW。如果它对你有用,那就太好了,但请注意这本书有几个问题。
-
您没有正确使用类。事实上,正确地编写这样的游戏非常、非常困难。对于初学者来说,这是一个可怕的练习。您可能应该找到一个更好的练习来解决 - 也可能找到一个合适的 OOP 教程。
标签: python class dictionary