class A(object):
class B(A):
def __init__(self):
pass
...拋出 「NameError:名字 'A' 沒有定義」。
是否有正確的語法來完成這項工作,還是必須使用變通方法?
class A(object):
pass
class _B(A):
pass
A.B = _B
以前是強烈優選的。謝謝。
class A(object):
class B(A):
def __init__(self):
pass
...拋出 「NameError:名字 'A' 沒有定義」。
是否有正確的語法來完成這項工作,還是必須使用變通方法?
class A(object):
pass
class _B(A):
pass
A.B = _B
以前是強烈優選的。謝謝。
根據OP的要求,張貼爲答案。
這是一個內部類,而不是子類。
不,內部類不能繼承(不擴展)它的外部類,因爲外部類在定義內部類時沒有完全定義。
您的解決方法不是解決方法,因爲它沒有內部類。你混淆的子類和內部類
你不能這樣做的正常方式,可能不應該這樣做。
對於那些有充分理由嘗試類似的人,通過在完全定義A
(請參閱https://stackoverflow.com/a/9639512/5069869)後動態更改A.B
的超類有一個解決方法。
這可能是可怕的代碼,一個大黑客,不應該做的,但它的工作原理在一定條件下(見鏈接答案)
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 = A.B.B.B.B()
噢,好主...感謝你的工作例子,但。它闡明瞭人們爲了實現這個目標必須採取多麼落後的行動。我將以不同的方式處理課程結構。 – ca2longoria
如果有人這樣做,我希望他們好運調試:) – DeepSpace
1這是一個內部類,而不是一個子類。 2.不,內部類不能繼承(不擴展)它的外部類,因爲外部類在定義內部類時沒有完全定義。 3.您的解決方法不是解決方法,因爲它沒有內部類。你混淆了子類和內部類。 – DeepSpace
請注意,在Python中,內部類很少有很好的用例。 –
然後我錯誤地查詢了這個查詢。所以這對內心階層來說是不可能的。是否有可能重命名這個問題,還是問題無效? – ca2longoria