[英]How to implement abstract class methods as static method in inherited class in python?
[英]Inherited static methods used with static class variable return NameError
我有两节课:
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之类的代码来做到这一点吗?
来自以上@Joel Cornett的评论:
静态方法不能直接引用其包含的类。 如果需要此功能,请改用类方法。 或者,您可以使用完全限定域名(BaseService。class_variable)来访问类变量。 由于明显的原因,这是不理想的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.