понеже аз не мога да ходя на лекции (няма достъп за количка в ФМ
Програмиране с Python » Форуми » Общи въпроси
наследници на даден клас
(13 posts)-
Posted 6 years ago #
-
В задачата се иска да търси
Posted 6 years ago # -
djv - май не си прав за __bases__
аз си направих следния тест:
class A(object): pass
class B(A): passb = B()
#print b.__bases__ - AttributeError: B instance has no attribute '__bases__'c = type('C', (A,), {})
print c.__bases__ # (<class '__main__.A'>,)тоест __bases__ работи само за динамични класове
Posted 6 years ago # -
class A(object): pass
class D(object): pass
class B(A): passprint B.__mro__
#(<class '__main__.B'>, <class '__main__.A'>, <class '__main__.D'>, <type 'object'>)само това успях да намеря...
Posted 6 years ago # -
въпрос:
ето тази картинка
http://fmi.py-bg.net/files/2007/04/p5-sample.gifдали съответства на този код
class D: pass class C: pass class B(D): pass class A(B, C): pass C.x = 4 D.x = 9
ако да, то djv е прав и търсенето става назад по иерархията и всичко е красиво и разбираемо.
фактически в рисунката трябва да се обърне посоката на стрелките...надявам се на скор отговор от авторите
Posted 6 years ago # -
и още въпрос
задължително ли да се предефинира __getattribute__
аз предефинирах __getattr__
щото класа ми е написан по старомуPosted 6 years ago # -
за картинката смятам, че е наистина така
class D: pass
class C: pass
class B(D): pass
class A(B, C): pass
C.x = 4
D.x = 9bases проработи :)
a = A()
print a.__class__.__bases__Posted 6 years ago # -
Търсенето, както си е описано в условието се извър
Posted 6 years ago # -
Posted 6 years ago #
-
Dilyana: ми в списъка няма да слага
Posted 6 years ago # -
A
B C
Dако тръгнем от клас Д да търсим и С има атрибут а . Връщаме ли атрибут а или не (ако в другите класове съответно не го намерим)
Posted 6 years ago # -
от картинката май не стана ясно. А е родител на Б и С. Б е родител на Д
Posted 6 years ago # -
Надя,
Погледни по-горе:На картинката стрелка от клас X към клас Y означава, че X е наследник на Y.
Posted 6 years ago #
Reply
You must log in to post.