有时我会创建一个类,它只用于存储一些值或静态方法,而我从不想要创建一个实例。
有没有办法在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()
答案 0 :(得分:2)
您可以使用找到的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
创建子类,以便成为新式的类。