LINUX.ORG.RU

Сообщения mnt

 

[python] [множ. наследование] Почему так?

Форум — Development

Есть базовый класс и два производных класса.
Первый производный класс не имеет собственной реализации foo
(наследует из базового), второй - имеет.
При множественном наследовании в случае old-style классов
используется foo базового класса (из c1)
В случае new-style - из c2.

Почему так?

# 1
class b:
    def foo(self):
        print('b')
class c1(b):
    pass
class c2(b):
    def foo(self):
        print('c2')
class c(c1, c2):
    pass
cc=c()
cc.foo() # выводит b

# 2
class b(object):
    def foo(self):
        print('b')
class c1(b):
    pass
class c2(b):
    def foo(self):
        print('c2')
class c(c1, c2):
    pass
cc=c()
cc.foo() # выводит c2

>>>

 

mnt
()

RSS подписка на новые темы