我是python的新手,但在尝试实现观察者模式的变体时我遇到了麻烦。
class X(models.Model):
a = models.ForeignKey(Voter)
b = models.CharField(max_length=200)
# Register
Y.register(X)
这似乎不起作用,因为它说X没有定义。有几件事是可能的:
A)有一种方法可以引用当前类(不是实例,而是类对象)。
B)你甚至无法在方法之外运行代码。 (我认为这可能几乎像一个静态构造函数 - 它只会运行一次)。
答案 0 :(得分:5)
在python中,执行类块中定义的代码,只有然后,这取决于各种事物 - 就像在这个块中定义的那样 - 创建了一个类。所以,如果你想把一个班级与另一个班级联系起来,你可以写下:
class X(models.Model):
a = models.ForeignKey(Voter)
b = models.CharField(max_length=200)
# Register
Y.register(X)
此行为与django无关。
答案 1 :(得分:4)
在类定义中运行(有限的)代码没有任何问题:
class X(object):
print("Loading X")
但是,您不能引用X,因为它尚未完全定义。