Python noob在这里。我正在进行一次" Text Adventure"打字游戏。我目前正在尝试为游戏项目构建一个类,其中包含这些项目的各种默认属性。其中一个属性将是一个布尔值" takeable",表示玩家是否可以使用此项目。我设法完成了这项工作,但前提是我为我创建的每个项目分配True
或False
到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'
我理解这种情况正在发生,因为当Python不期待另一个参数时,我传递了参数takeable=True
。
在创建类实例的过程中,有没有办法覆盖这样的默认值?我知道每次创建一个新的"项目时,我只需要传递takeable
的布尔值。实例,但似乎有一种方法可以默认为一个值,并且能够在创建类实例时覆盖它。
答案 0 :(得分:0)
您的__init__
不接受takeable
- 参数。您可以将其设为可选参数(默认为False
,如果没有给出):
def __init__(self, item_name, item_description, takeable=False):
[...]
self.takeable = takeable
答案 1 :(得分:0)
您实际上是在描述默认参数:
class Objects():
"""Basic structure of all game objects."""
def __init__(self, item_name, item_description, takeable=False):
self.item_name = item_name
self.item_description = item_description
self.takeable = takeable
现在您可以选择是否提供takeable
作为值,如果不是,则选择值False
。
答案 2 :(得分:0)
默认值分配给参数,而不是在init定义中。
class Objects():
"""Basic structure of all game objects."""
def __init__(self, item_name, item_description, takeable=False):
self.item_name = item_name
self.item_description = item_description
self.takeable = takeable
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),
}
另一种方法是在创建后设置它,但这需要它在dict
items["main_room_key"].takeable = True
之外进行$scope.$on()