簡體   English   中英

Python 內部類可以是它自己的外部類的子類嗎?

[英]Can a Python inner class be a subclass of its own outer class?

這個...

class A(object):
    class B(A):
        def __init__(self):
            pass

...拋出“NameError:名稱'A'未定義”。

是否有正確的語法來實現這一點,或者我必須使用像這樣的解決方法?

class A(object):
    pass
class _B(A):
    pass
A.B = _B

先驗是非常可取的。 謝謝你。

您不能以正常方式執行此操作,並且可能不應該執行此操作。

對於那些有正當理由嘗試類似操作的人,有一種解決方法是在A完全定義后動態更改AB的超類(請參閱https://stackoverflow.com/a/9639512/5069869 )。

這可能是糟糕的代碼,一個很大的黑客,不應該做,但它在某些條件下工作(見鏈接的答案)

class T: pass
class A(object):
  def a(self):
    return "Hallo a"
  class B(T):
    def b(self):
      return "Hallo b"
A.B.__bases__ = (A,)
b=A.B()
assert isinstance(b, A)
assert b.a()=="Hallo a"

現在你甚至可以做一些奇怪的事情,比如x = ABBBB()

根據 OP 的要求,作為答案發布。

  1. 那是內部類,而不是子類。

  2. 不,內部類不能繼承(不擴展)其外部類,因為在定義內部類時未完全定義外部類。

  3. 您的解決方法不是解決方法,因為它沒有內部類。 你混淆了子類和內部類

暫無
暫無

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

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