我正在使用Python自动化一个乐器,但我不熟悉使用Python进行面向对象编程。我想创建几个类:仪器的超类和几个子类来控制仪器的特定组件(控制器,传感器等)
class instrument(object):
def __init__(self):
pass
def function1(self):
print 'Do something'
class component1(instrument):
def __init__(self):
super(component1, self).__init__()
def function2(self):
print 'Do something to component 1'
但是,当我尝试调用component1时:
I = instrument()
comp = I.component1()
我得到一个AttributeError:
AttributeError: 'instrument' object has no attribute 'component1'
答案 0 :(得分:0)
您无需通过component1
访问instrument
课程。只需做
I = instrument()
comp = component1()
您正在做的是访问component1
实例的instrument
属性(不存在),而不是实例化新的component1
。
答案 1 :(得分:0)
component1
是instrument
的子类型,因此要创建component1
对象,您只需要创建它。您尤其不需要创建instrument
对象来创建它:
comp = component1()
comp.function1()
comp.function2()
不需要知道实际存在基本类型。
答案 2 :(得分:0)
只是做:
comp = component1()
component1不是乐器类的一部分,而是派生自它的类(因此它是'特殊'乐器)。 此外,最好将类名称大写=>仪器,组件