这里是Python角。我在做一个“文字冒险”类型的游戏。我正在尝试为游戏项目构建一个类,为这些项目提供各种默认属性。其中一个属性是布尔型的“takeable”,用来指示玩家是否可以拿走这个物品。我已经成功地实现了这一点,但前提是我要为我创建的每个项目分配True
或{takeable
。我已经知道了如何默认为takeable=False
,但似乎我不能有选择地将takeable=True
传递给“可接受”的少数项目
class Objects():
"""Basic structure of all game objects."""
def __init__(self, item_name, item_description):
self.item_name = item_name
self.item_description = item_description
self.takeable = False
items = {
"main_room_table": Objects("Wooden table", "A large wooden table with items scatter atop its surface."),
"main_room_key": Objects("Small brass key", "A small brass skeleton key. What could it unlock?", takeable=True)
这会导致TypeError: __init__() got an unexpected keyword argument 'takeable'
我理解这是因为我在传递参数{
在类实例的创建过程中,有没有一种方法可以覆盖这样的默认值?我知道我可以在每次创建一个新的“item”实例时都传递一个takeable
的布尔值,但似乎有一种方法可以默认为一个值,并能够在创建类实例时重写它。在
您的
__init__
不接受takeable
-参数。您可以将其设为可选参数(如果未给定,则默认为False
):您实际上是在描述默认参数:
现在您可以选择是否提供
takeable
作为值,如果不提供,则接受值False
。在默认值被分配给参数,而不是在init定义内。在
另一种方法是在创建之后设置它,但这需要它在
dict
之外用items["main_room_key"].takeable = True
来设置它相关问题 更多 >
编程相关推荐