在类定义之前创建类的实例?
这是我遇到的问题的一个例子:
class bar() :
spam = foo()
def test(self) :
print self.spam.eggs
pass
class foo() :
eggs = 50
我猜问题出在我试图在类还没有定义之前就创建这个类的实例。显而易见的解决办法是重新排列我的类的顺序,但我喜欢把我的类按字母顺序排列(也许这是个傻乎乎的做法)。有没有办法同时定义所有的类呢?我是不是只能咬牙切齿地重新排列我的类定义?
1 个回答
7
按字母顺序排列其实是个很傻的主意;-)。不过,还有很多其他的选择,比如:
class aardvark(object):
eggs = 50
class bar(object):
spam = aardvark()
def test(self) :
print self.spam.eggs
foo = aardvark
还有
class bar(object):
spam = None # optional!-)
def test(self) :
print self.spam.eggs
class foo(object):
eggs = 50
bar.spam = foo()
要注意,比起“字母顺序”,更重要的是把所有的类都变成“新风格”(我在上面的两个例子中都做了),还有就是去掉那些完全多余的代码,比如那些 pass
语句(我也做了;-)。