Обязательно ли определять используемые в миксине атрибуты?

Насколько я знаю, при написании миксинов принято обозначить используемые атрибуты, даже если они на самом деле определяются в дочернем классе. Этого можно и не делать, но это правило хорошего тона, чтобы не обращаться к несуществующим внутри класса атрибутам:

class ChildMixin:
    property = None

    def print_property(self):
        print(self.property)


class Child(ChildMixin):
    property = 'Test'


Child().print_property() #Test

Но что если мне нужно унаследовать какое-то свойство от какого-то родительского класса и при этом использовать его в миксине? Если обозначить его как None, то это переопредит атрибут в дочернем классе. А если вообще его не обозначить в миксине, а просто обратиться к нему в методе, то это вроде как нехорошо. Как быть?

class ChildMixin:
    property = None

    def print_property(self):
        print(self.property)


class Parent:
    property = 'Some Value'


class Child(ChildMixin, Parent):
    pass


Child().print_property()  # None


Ответы (0 шт):