Я озадачен python, тем больше я попадаю в него.python доступ к атрибутам, переопределенным в производных классах
Например, следующий код:
class A:
def __init__ (self):
self.test = "a"
def dump(self):
print("A.test: %s" % (self.test,))
print("A.test: %s" % (self.__dict__["test"],))
print("A.test: %s" % (getattr(self, "test"),))
print()
class B (A):
def __init__ (self):
self.test = "b"
def dump(self):
print("B.test: %s" % (self.test,))
print("B.test: %s" % (self.__dict__["test"],))
print("B.test: %s" % (getattr(self, "test"),))
print()
o = B()
o.dump()
A.dump(o)
super(B, o).dump()
печатает:
B.test: b
B.test: b
B.test: b
A.test: b
A.test: b
A.test: b
A.test: b
A.test: b
A.test: b
, который, кажется, чтобы показать, что вы можете вызвать функцию базового класса, но если этот класс имеет атрибут, который был также используемый в каком-либо производном классе, вы не можете получить доступ к этому атрибуту, используя стандартную нотацию object.atribute или, возможно, вы вообще не можете получить к ней доступ.
Действительно ли это так? Если это так, то это будет убивать - IMHO - целая модель объекта python.
Нет, вы не можете получить к нему доступ вообще. Возможно, вам следует углубиться в целую идеологию класса Python.Это немного отличается от языков, таких как C++ и C# – dmg
Тот факт, что вы наблюдаете, никоим образом не вредит объектной модели Python. Это, по сути, довольно центрально. – delnan