道歉,如果这没有意义,我不是一个经验丰富的程序员。
请考虑以下代码:
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继承这个类?
在决定这两种方法时,是否有任何最佳实践或我应该考虑的事项?
非常感谢
答案 0 :(得分:6)
请允许我提出一个不同的例子。
想象一下拥有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)
所以答案是真的:取决于你需要做什么,但是当你清楚地知道你编码的是什么时,选择子类别之间的选择就变得很明显了。
我希望它有所帮助。
答案 1 :(得分:0)
你让它听起来像是在尝试“选择”这两种方法,但它们完全不同。第二个定义了一个类,它继承自一个名为classInstance
的类(容易引起混淆)。第一个定义了一个名为MyClass
的类(不继承自除基本obect
类型之外的任何类型),该类具有名为self.classInstance
的实例变量,该变量恰好设置为{的实例{1}}上课。
为什么要为您的班级classInstance
命名?