Есть ли способ сделать что-то подобное?Я работаю в 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
являются статическими и не будут изменены экземплярами.