python观察者模式

时间:2009-06-25 20:48:48

标签: python django

我是python的新手,但在尝试实现观察者模式的变体时我遇到了麻烦。

class X(models.Model):
    a = models.ForeignKey(Voter)
    b = models.CharField(max_length=200)

    # Register 
    Y.register(X)

这似乎不起作用,因为它说X没有定义。有几件事是可能的:

A)有一种方法可以引用当前类(不是实例,而是类对象)。

B)你甚至无法在方法之外运行代码。 (我认为这可能几乎像一个静态构造函数 - 它只会运行一次)。

2 个答案:

答案 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,因为它尚未完全定义。