我是新的编码阶段(3个星期),并一直在建设和重建一个RPG,以帮助教自己的原则,我一直在学习。然而,我似乎停留在Python类的一个特定方面。你知道吗
我为worldLocation
类创建的类变量读取NORTH
、EAST
、SOUTH
、WEST
所有引用字符串:
WHITEROOM = worldLocation('A Plain White Room',
'...\n\nWhere are you?\n\n'
'All around you is white...\n\n'
'...only white...',
[ROCK.GROUNDDESC],
[RAT.NAME],
{NORTH: 'A Plain White Room',
SOUTH: 'A Plain White Room',
EAST: 'A Plain White Room',
WEST: 'A Plain White Room'})
但我希望它改为这样读,每个实例变量引用类变量本身:
WHITEROOM = worldLocation('A Plain White Room',
'...\n\nWhere are you?\n\n'
'All around you is white...\n\n'
'...only white...',
[ROCK.GROUNDDESC],
[RAT.NAME],
{NORTH: WHITEROOM,
SOUTH: WHITEROOM,
EAST: WHITEROOM,
WEST: WHITEROOM})
但是,每次尝试将其更改为后者时,都会收到undefined name WHITEROOM
错误。我做错了什么或错过了什么?你知道吗
类别代码如下:
class worldLocation(object):
def __init__(self, NAME, DESC, GROUND, ENEMIES, DIRECTIONS):
self.NAME = NAME
self.DESC = DESC
self.GROUND = GROUND
self.ENEMIES = ENEMIES
self.DIRECTIONS = DIRECTIONS
您可以完成您想要完成的事情,但是在声明变量之前不能引用它。你知道吗
例如,不能说
A={'key':A}
,因为在创建dict
之前,它不能用作'key'
的值。你知道吗试试这个:
为什么这样做?好的,
worldLocation
构造函数__init__
将创建worldLocation
对象并将其赋给变量WHITEROOM
。然后我们可以使用点操作符访问WHITEROOM.DIRECTIONS
变量,并将一个新的dict
传递给它,该变量使用WHITEROOM
变量作为WHITEROOM
对象的引用。 它不像你想的那么优雅,但我想这样你就能做你想做的事了。你知道吗您要使用的代码试图引用字典中作为参数传递给
__init__()
的实例,但它不存在。这是不可行的(如果你仔细想想,可以说是非常合理的)。你知道吗但是,您可以通过创建一个特殊值来解决这个问题,类初始值设定项
__init__()
方法可以检查并修复正在传递的数据。你知道吗下面的代码说明了我的意思。注意我在开始时添加了一些脚手架,使其能够运行以进行测试。你知道吗
样本输出:
变量直到函数返回后才获得值,因此不能在函数的参数中引用它。在赋值变量之后,必须添加这些引用。你知道吗
相关问题 更多 >
编程相关推荐