Форум сайта python.su
# -*- coding: utf-8 -*- class A: a=0 class B(A): b=0 A.a=1 print A.__dict__ print B.__dict__ # почему здесь нет 'a' ? print dir(B) # а здесь 'a' есть print B.a # почему a=1 ?
Офлайн
vkopeyПотому что a - это атрибут класса A и его нет в B.__dict__.
print B.__dict__ # почему здесь нет ‘a’ ?
vkopeyАтрибуты базовых классов берутся в порядке MRO.
print dir(B) # а здесь ‘a’ есть
print B.a # почему a=1 ?
B.a = 2 # теперь B.a - атрибут B print A.a # 1 print B.__dict__ # {... 'a': 2} # и присваивание атрибуту базового класса значения A.a = 3 # не влияет на B print B.a # 2
Отредактировано reclosedev (Май 26, 2012 09:19:06)
Офлайн