4

抱歉,如果这没有意义,我不是一个有经验的程序员。

考虑以下代码:

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 继承这个类?

在这两种方法之间做出决定时,是否有任何最佳实践或我应该考虑的事情?

非常感谢

4

2 回答 2

7

请允许我提出一个不同的例子。

想象一下有类 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)

所以答案真的是:取决于你需要做什么,但是当你清楚地知道你在编码什么时,在子类之间进行选择就变得很明显了。

我希望它有所帮助。

于 2012-06-27T09:49:21.020 回答
0

你听起来像是在尝试在这两种方法之间“做出选择”,但它们做的事情完全不同。第二个定义了一个类,该类继承自一个(令人困惑的)名为classInstance. 第一个定义了一个名为的类MyClass(不继承自基obect类型以外的任何东西),它有一个名为 的实例变量self.classInstance,它恰好被设置为classInstance该类的一个实例。

你为什么要命名你的班级classInstance

于 2012-06-27T07:12:21.413 回答