有时我创建一个类,它仅用于存储一些值或静态方法,而我从不想要创建实例。
有没有办法在Python3中表达这一点?
例如:
class MyClass:
@staticmethod
def hello():
print("world")
# is there a better way to do this?
def __init__(self):
raise Exception("instantiation isnt supported for this class!")
# OK
MyClass.hello()
# NOT OK
c = MyClass()
最佳答案
您可以使用发现的objectless
基类in this answer (这实际上是对另一个问题的回答)。
class objectless:
def __new__(cls, *args, **kwargs):
raise RuntimeError('%s should not be instantiated' % cls)
class UninstantiateableClass(objectless):
@classmethod
def foo(cls):
return 'bar'
...
请注意,在 python2 中,objectless
应显式子类 object
,以便成为新式类。
关于class - 如何在Python中禁用类实例化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26402233/