Изменение переменной класса: хорошая практика или нет? (Python)
У меня есть класс Foo
, содержащий переменную класса size
, Я хочу рассчитать размер при первом создании Foo
Объект и использовать то же самое для всех последующих объектов, но не рассчитать размер снова. Ради сдерживания всего в пределах Foo
класс я придумал этот код:
class Foo(object):
size = -1
def __init__(self,args):
if Foo.size < 0:
Foo.size = some_calculation(args)
В моих маленьких тестах он делает то, что я хочу. Однако считается ли это хорошей практикой? Есть ли лучший способ сделать это?
1 ответ
Это ни в коем случае не исчерпывающий ответ, но я хотел бы указать на то, что я не могу легко описать в комментарии.
Как сказано в комментариях, нет ничего плохого в вашем подходе. Это зависит от того, что вы хотите сделать.
Позвольте мне указать, что в случае, если в будущем вы определите подкласс, который вычисляет size
в соответствии с другим правилом / начальным значением, может быть полезно обратиться к нему через self.
(вместо того, чтобы достичь его через имя класса)
например
>>> class A:
... size=1
... def printsize(self):
... print(self.size)
...
>>> class B(A):
... size=2
...
>>> a=B()
>>> a.printsize()
2