Обязательно ли определять используемые в миксине атрибуты?
Насколько я знаю, при написании миксинов принято обозначить используемые атрибуты, даже если они на самом деле определяются в дочернем классе. Этого можно и не делать, но это правило хорошего тона, чтобы не обращаться к несуществующим внутри класса атрибутам:
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