15.12.2022 Views

Python Eficaz

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

class PlusFive(object):

def __init__(self):

self.value += 5

Esta classe define suas classes-mãe em determinada ordem.

class OneWay(MyBaseClass, TimesTwo, PlusFive):

def __init__(self, value):

MyBaseClass.__init__(self, value)

TimesTwo.__init__(self)

PlusFive.__init__(self)

Ao construir um objeto com essa classe, o resultado produzido obedece à ordem

definida de classes-mãe.

foo = OneWay(5)

print('First ordering is (5 * 2) + 5 =', foo.value)

>>>

First ordering is (5 * 2) + 5 = 15

Esta outra classe define as mesmas classes-mãe, mas em ordem diferente:

class AnotherWay(MyBaseClass, PlusFive, TimesTwo):

def __init__(self, value):

MyBaseClass.__init__(self, value)

TimesTwo.__init__(self)

PlusFive.__init__(self)

Entretanto, as chamadas aos construtores PlusFive.__init__ e TimesTwo.__init__

da classe mãe estão na mesma ordem que antes, fazendo com que o

comportamento desta segunda classe não combine com a ordem da classe-mãe

em sua definição.

bar = AnotherWay(5)

print('Second ordering still is', bar.value)

>>>

Second ordering still is 15

Outro problema ocorre com a chamada herança losangular (diamond

www.full-ebook.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!