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

Rya*_*ins 0 python class

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

class bar() :
    spam = foo()
    def test(self) :
        print self.spam.eggs
        pass

class foo() :
    eggs = 50
Run Code Online (Sandbox Code Playgroud)

问题(我假设)是我在定义类之前尝试创建类的实例.显而易见的解决方案是重新排序我的课程,但我喜欢按字母顺序保留我的课程(也许是一种愚蠢的练习).有没有办法同时定义我的所有类?我只需要咬紧牙关并重新排序我的班级定义吗?

Ale*_*lli 6

字母顺序确实是一个愚蠢的想法;-).然而,各种可能性包括:

class aardvark(object):
    eggs = 50

class bar(object):
    spam = aardvark()
    def test(self) :
        print self.spam.eggs

foo = aardvark
Run Code Online (Sandbox Code Playgroud)

class bar(object):
    spam = None  # optional!-)
    def test(self) :
        print self.spam.eggs

class foo(object):
    eggs = 50

bar.spam = foo()
Run Code Online (Sandbox Code Playgroud)

请注意,比"字母顺序"更重要的方面包括使所有类"新风格"(我已在上面的两个示例中完成)并删除完全冗余的代码,如那些pass语句(我也是这样做的;-).