如何解决是否可以定义一个静态类成员及其所在类的类型?
如何定义一个静态类成员,其类型与它所在的类相同?我直觉上是这样试的:
class A:
def __init__(self,a,b,c,d):
...
default_element = A(1,2,3,4)
哪个给出了错误
名称“A”未定义
class A:
def __init__(self,a=1,b=2,c=3,d=4):
...
或
class A:
def __init__(self,d):
...
@staticmethod
def getDefault():
return A(1,4)
但如果可能的话我更喜欢默认元素,所以我们实际上有一个代表默认值的对象,而不是一个方法,你只能有一组默认值,而首选选项我可以有多个不同的模板-对象。
我使用的是 Python 3.6.9。
解决方法
据我所知,这并不容易:(请参阅 https://stackoverflow.com/a/27568860/1256837 中的“一个需要注意的问题”)
但是有一个轻微的解决方法,我关注您提供不同模板的要求:
class _A:
def __init__(self,a=None):
self.a = a
def blubb(self):
return self.a**2
class A(_A):
template_default = _A(0)
template_1 = _A(5)
assert A.template_default.blubb() == 0
assert A.template_1.blubb() == 25
assert A(50).blubb() == 2500
但是,我认为这段代码有异味:我认为这不是一个好的做法。
但是如果你把这个类放在一个 python 模块中......那么在你的定义中你可以创建模块范围的“常量”来匹配你的类的不同实例。我想,那会是一个更好的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。