• 1399/11/14

Cannot create a consistent method resolution order :

با سلام خدمت شما استاد عزیز ....

 

ببخشید استاد من در قسمت وراثت چندگانگی یا MRO چیزی که متوجه شدم این بود ...که به صورت کلی ... ترتیب انجام عملیات ارث بری هستش و به ترتیب اون کلاس هایی که وارد میکنیم ارث بری میکنه....

الان این مفهموم دست هستش؟؟؟

 

و استاد شما در داخل دوره ی جنگو از این مفهوم استفاده کرده اید؟

 

من با استفاده از این مفاهیم برای خودم یه کدی زدم تا مفهومش بهتر جا بیافته...

 

class Base:
    def __init__(self,name,family,age):
        self.name = name
        self.family = family
        self.age = age

    def sayHello(self):
        return f"{self.name} Hello !!! "


class Base2(Base):
    def __init__(self,name,family,email,age):
        super().__init__(name,family,age)
        self.email = email

    def ShowFullName(self):
        return f"{self.name} {self.family}"


class Base3(Base2,Base):
    def GoodBye(self):
        return f"{self.name} {self.family}"

class Base4(Base,Base2,Base3):
    pass


# me = Base2('ali','talebi','test@test',23)
# print(me.email)
# 
# you = Base3('aref','talebi','moh96ordo',23)
# print(you.sayHello())

we = Base4('mahsa','ahmadi','alirezatlb45@gmail.com',23)
print(we.family)

این از کد بالا ولی ...

ولی این خروجی بهم ارور میده....

Traceback (most recent call last):
  File "C:/Users/SALAM/Desktop/programming/PYTHON/venv/Mymodules/Advanced/Getter-Setter/Getter-Setter.py", line 24, in <module>
    class Base4(Base,Base2,Base3):
TypeError: Cannot create a consistent method resolution
order (MRO) for bases Base, Base2, Base3

 

  • 1399/11/18
  • ساعت 07:35

سلام دوست من

شما مبحث MRO رو به اشتباه متوجه شدین

متدها باید همنام باشن و از طرف دیگه ورودی ارسال شده به base4 اصلا درست نیست

مجدد کدتون رو بازبینی کنین


logo-enamadlogo-samandehi