簡體   English   中英

Python MRO 簡明英語

[英]Python MRO in plain English

我是 Python 的新手,無法理解 Python MRO。 有人可以盡可能簡單地解釋下面的問題嗎?

為什么這段代碼拋出TypeError: Cannot create a consistent method resolution

class A:
  def method(self):
    print("A.method() called")
 
class B:
  def method(self):
    print("B.method() called")
 
class C(A, B):
  pass
 
class D(B, C):
  pass
 
d = D()
d.method()

雖然這段代碼工作正常:

class A:
  def method(self):
    print("A.method() called")
 
class B:
  def method(self):
    print("B.method() called")
 
class C(A, B):
  pass
 
class D(C, B):
  pass
 
d = D()
d.method()

當您在第一個示例中解析方法的層次結構時,您會得到

  1. B.方法
  2. 一個方法
  3. B.方法

在第二個例子中,你得到

  1. 一個方法
  2. B.方法
  3. B.方法

第一個不起作用,因為關於 B.method 是在 A.method 之前還是之后,它是不一致的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM