簡體   English   中英

從兩個類繼承(要么)

[英]Inherit from two classes (either or)

我對類繼承有以下問題。 給定類A , B , C如下

class A(object):
    ...

class B(A):
    ...

class C(A):
    ...

我想要一個D類,它可以從BC繼承,具體取決於用例。 現在,我已經通過動態類定義解決了這個問題:

def D(base_class, parameter1, parameter2):
    class D(base_class):
        ...
    return D(parameter1, parameter2)

這是正確的方法,還是有更好的方法來解決這個問題?

與其讓D創建一個類返回一個實例,不如讓它只返回該類,然后您可以根據需要使用它來創建多個實例。

def make_D(base_class):
    class D(base_class):
        ...
    return D

DB = make_D(B)
DC = make_D(C)

d1 = DB(...)
d2 = DC(...)
d3 = DC(...)

此時,您應該考慮是否真的需要一個工廠函數來定義您的子類,而不是簡單地直接定義DBDC

暫無
暫無

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

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