[英]How to inherit all class attributes, but one? Python
如何繼承所有 class 'A' 屬性和方法,但 'b()'?
class A:
def __init__(self):
# attributes
pass
@classmethod
def b(cls):
# logic
pass
class B(A):
def __init__(self, **kwargs):
super().__init__(**kwargs)
def b(self):
# nothing
pass
不要使用這種舊方法(如果有其他方法):
class B(A):
def __init__(self, attributes):
super().__init__(self, attributes)
您可以重新實現b()
以引發錯誤:
class A:
def __init__(self):
# attributes
pass
@classmethod
def b(cls):
# logic
pass
class B(A):
def __init__(self, **kwargs):
super().__init__(**kwargs)
@classmethod
def b(cls):
raise TypeError("method b is not supported in class B")
此外,如果b()
是一個classmethod
,您可能應該將它覆蓋為一個classmethod
。
將該方法放在單獨的 class 中,不要繼承它。
class A:
def __init__(self):
# attributes
pass
class A1:
@classmethod
def b(cls):
# logic
pass
class B(A):
def __init__(self, **kwargs):
super().__init__(**kwargs)
當您需要該方法時,請使用多個 inheritance。
class C(A,A1):
pass
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.