Я хочу создать класс utils, который будет содержать только статические члены, например,
class A(object):
X = 0
@staticmethod
def f():
print X
Я также хочу, чтобы все его методы использовались без экземпляра, т.е. я хочу, чтобы пользователь вызывал A.f()
, а не a = A(); a.f()
.
Один из способов - использовать @abc.abstractmethod
, например,
class A(object):
X = 0
@abc.abstractmethod
def __init__(self):
raise Exception('Should not be created!')
@staticmethod
def f():
print X
Второй вариант - не использовать абстрактный, поскольку он подразумевает наследование, а это не вещьЯ проектирую ель этого класса.В этом случае я бы просто поднял исключение как из __init__
, так и __new__
Что было бы наилучшей практикой (третий вариант?)