Есть ли способ сделать что-то подобное? Я работаю в Python, но не уверен, что есть способ сделать это в любом языке программирования...
class Parent():
class_attribute = "parent"
@staticmethod
def class_method():
print __class__.class_attribute
class Child(Parent):
class_attribute = "child"
Я знаю, что не могу вызвать __class__
напрямую. Это просто пример, потому что я бы хотел что-то вроде ссылки на сам класс, потому что я хочу, чтобы дочерний класс действовал по-разному, основываясь на его class_attribute.
И тогда предполагаемый результат должен быть таким:
> Parent.class_method()
"parent"
> Child.class_method()
"child"
Я знаю, что ту же технику можно реализовать через экземпляры. Но я не хочу создавать экземпляры, потому что иногда код в методе __init__
может быть длинным и сложным, и если я захочу часто вызывать class_method
, мне придется создать множество экземпляров, используемых только для одного вызова метода. А поскольку class_attribute
и class_method
статичны и не будут изменяться экземплярами.