Python自动化:类和子类'AttributeError'

时间:2014-03-10 22:25:48

标签: python class subclass attributeerror

我正在使用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'

3 个答案:

答案 0 :(得分:0)

您无需通过component1访问instrument课程。只需做

I = instrument()
comp = component1() 

您正在做的是访问component1实例的instrument属性(不存在),而不是实例化新的component1

答案 1 :(得分:0)

component1instrument的子类型,因此要创建component1对象,您只需要创建它。您尤其不需要创建instrument对象来创建它:

comp = component1()
comp.function1()
comp.function2()

不需要知道实际存在基本类型。

答案 2 :(得分:0)

只是做:

comp = component1()

component1不是乐器类的一部分,而是派生自它的类(因此它是'特殊'乐器)。 此外,最好将类名称大写=>仪器,组件