簡體   English   中英

python模塊導入中的繼承vs類實例

[英]Inheritance vs class instance in python module import

抱歉,如果這沒有意義,我不是一個經驗豐富的程序員。

請考慮以下代碼:

import mymodule

class MyClass:
    def __init__(self):
        self.classInstance = myModule.classInstance()

然后 ......

from mymodule import classInstance

class MyClass(classInstance):
    def __init__(self):
        pass

如果我只是想在MyClass中使用一個classInstance,是否可以從模塊中導入特定的類並讓MyClass繼承這個類?

在決定這兩種方法時,是否有任何最佳實踐或我應該考慮的事項?

非常感謝

請允許我提出一個不同的例子。

想象一下,有了Vector類。 現在你想要一個Point Point。 Point可以用向量定義,但也許它具有Vector沒有的其他額外功能。 在這種情況下,您從Vector派生Point。

現在你需要一個Line類。 Line不是上述任何類的特化,因此您可能不希望從它們中的任何類派生它。 但Line使用積分。 在這種情況下,您可能希望以這種方式啟動Line類:

class Line(object):
    def __init__(self):
        self.point1 = Point()
        self.point2 = Point()

哪個點會是這樣的:

class Point(Vector):
    def __init__(self):
        Vector.__init__(self)

所以答案是真的:取決於你需要做什么,但是當你清楚地知道你編碼的是什么時,在子類別之間進行選擇之間的選擇就變得很明顯了。

我希望它有所幫助。

你讓它聽起來像是在嘗試“選擇”這兩種方法,但它們完全不同。 第二個定義了一個類,它繼承自一個叫做classInstance的類(容易引起混淆)。 第一個定義了一個名為MyClass的類(不是從基礎obect類型繼承的類),它有一個名為self.classInstance的實例變量,它恰好被設置為classInstance類的一個實例。

你為什么要命名你的class classInstance

暫無
暫無

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

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