наследование по атрибутам класса (python)

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

6
задан Kevin Burke 24 October 2013 в 18:15
поделиться