与静态类变量一起使用的继承静态方法返回NameError

时间:2015-03-18 22:11:58

标签: python

我有两个班级:

 class BaseService(object):
     @staticmethod
     def say_name:
         return __class_variable__

 class SubClassService(BaseService):
      __class_variable__ = NOLA

当我像这样调用我的静态方法时:

 SubClassService.say_name()

我得到了:

 NameError: global name '__class_variable__' is not defined

过去使用SQLAlchemy,我认为这是我可以轻松完成的事情,但事实证明他们使用@declared_attr自定义装饰器来实现类似的功能。

我可以不使用类似SQLAlchemy的代码吗?

1 个答案:

答案 0 :(得分:0)

来自@Joel Cornett的上述文章:

  

staticmethod不能直接引用其包含的类。如果您需要此功能,请改用classmethod。或者,   您可以使用完全限定名称(BaseService。 class_variable )   访问类变量。出于显而易见的原因,这并不理想。