Python 观察者模式
我刚开始学Python,但在尝试实现观察者模式的变种时遇到了一些问题。
class X(models.Model):
a = models.ForeignKey(Voter)
b = models.CharField(max_length=200)
# Register
Y.register(X)
这个代码似乎不太对,因为它说X没有定义。可能有几个原因:
A) 有一种方法可以引用当前的类(不是实例,而是类对象本身)。
B) 你甚至不能在方法外面运行代码。(我原以为这可能像静态构造函数一样,只会运行一次)。
2 个回答
5
在Python中,类里面写的代码会先执行,然后根据一些情况,比如这个类里面定义了什么,才会创建出这个类。所以如果你想把一个类和另一个类联系起来,你可以这样写:
class X(models.Model):
a = models.ForeignKey(Voter)
b = models.CharField(max_length=200)
# Register
Y.register(X)
而这种行为和Django没有关系。
4
在类的定义中运行(有限的)代码是没有问题的:
class X(object):
print("Loading X")
不过,你不能引用X,因为它还没有完全定义好。