0

一点背景 - 我正在玩 pygame,并想创建一个包含所有 Mob 类实例位置的字典。

我的看法:

human = Mob(pos)
mob_positions = {human : pos}

所以每次我打电话时,Mob.__init__()我都想在字典中添加pos一个mob_positions

如何访问当前实例变量名称?或者这是非常错误的方法?

4

3 回答 3

2

任何绑定方法,包括__init__,都至少需要一个参数,通常命名为self,这正是您所描述的。

class Mob(object):
    def __init__(self, pos):
        mob_positions[self] = pos
于 2012-08-11T13:32:06.480 回答
2

你有几种方法可以解决这个问题。其中之一是将 mob_positions 字典作为参数传递给 __init__。

class Mob(object):
    def __init__(self, pos, field=None):
        ...
        if field:
            field[self] = pos

这样的符号允许您将暴徒置于初始化或不初始化(取决于您对暴徒所做的事情)。

于 2012-08-11T13:33:45.827 回答
1

当前实例变量只是函数的第一个参数。按照惯例,它被命名为self.

这是我做事的方式。

class Mob(object):
    def __init__(self, pos, mob_positions):
        self.pos = pos
        mob_positions[self] = pos
于 2012-08-11T13:32:22.300 回答