在类定义之前创建类的实例?

2 投票
1 回答
3058 浏览
提问于 2025-04-16 01:43

这是我遇到的问题的一个例子:

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 语句(我也做了;-)。

撰写回答