2016-12-02 76 views
1

试图在自己内部引用一个类。对于例如Python:如何在自己内部引用一个类?

class Test: 
    FOO_DICT = {1 : Test.bar} # NameError: name 'Test' is not defined 

    @staticmethod 
    def bar(): 
     pass 

这种用法是否有意义?任何更好的选择? 谢谢!

+0

只要使用'栏'本身。 – DyZ

+0

@DYZ那不行,因为'bar'还没有被定义。 –

+0

正如有人在下面建议的那样,改变定义的顺序。 – DyZ

回答

3

如果你想在字典中的类:首先定义功能,并删除测试:

class Test: 
    @staticmethod 
    def bar(): 
     pass 

    FOO_DICT = {1: bar} 
+0

可能应该避免顺序依赖,但似乎没有更好的模式。 – cheng

0

您可以移动FOO_DICT = {1 : Test.bar}课外的是这样的:

class Test: 
    @staticmethod 
    def bar(): 
     pass 
Test.FOO_DICT = {1: Test.bar} 
+1

这违反了类封装,应该避免。 – DyZ

相关问题