一点背景 - 我正在玩 pygame,并想创建一个包含所有 Mob 类实例位置的字典。
我的看法:
human = Mob(pos)
mob_positions = {human : pos}
所以每次我打电话时,Mob.__init__()
我都想在字典中添加pos
一个mob_positions
。
如何访问当前实例变量名称?或者这是非常错误的方法?
一点背景 - 我正在玩 pygame,并想创建一个包含所有 Mob 类实例位置的字典。
我的看法:
human = Mob(pos)
mob_positions = {human : pos}
所以每次我打电话时,Mob.__init__()
我都想在字典中添加pos
一个mob_positions
。
如何访问当前实例变量名称?或者这是非常错误的方法?
任何绑定方法,包括__init__
,都至少需要一个参数,通常命名为self
,这正是您所描述的。
class Mob(object):
def __init__(self, pos):
mob_positions[self] = pos
你有几种方法可以解决这个问题。其中之一是将 mob_positions 字典作为参数传递给 __init__。
class Mob(object):
def __init__(self, pos, field=None):
...
if field:
field[self] = pos
这样的符号允许您将暴徒置于初始化或不初始化(取决于您对暴徒所做的事情)。
当前实例变量只是函数的第一个参数。按照惯例,它被命名为self
.
这是我做事的方式。
class Mob(object):
def __init__(self, pos, mob_positions):
self.pos = pos
mob_positions[self] = pos