类:Python中继承类中的__new__和__init__

时间:2017-08-10 16:00:47

标签: python python-3.x

我有一个这样的课程:

class FloatArray():
    def __init__(self):
        self.a = 1.5

    def __new__( cls, value ):
        data = (c_float * value)()
        return data

array_1 = FloatArray(9)
print(array_1)
>>>> __main__.c_float_Array_9 object at 0x102228c80>

现在我想让一个FloatArray4类继承自FloatArray类,并且可以调用值a。

这是第二节课的代码。

class FloatArray4( FloatArray ):
    def __init__(self):
        super(FloatArray, self).__init__()

    def printValue( self ):
        print(self.a)

我有问题:

首先,我必须打电话给array_2 = FloatArray4(4)我不想要的,我希望它被称为array_2 = FloatArray4(),但我不知道如何。

其次,当我尝试拨打array_2.printValue()时出现错误:AttributeError: 'c_float_Array_4' object has no attribute 'printValue'

有人可以帮忙吗?

感谢。

1 个答案:

答案 0 :(得分:0)

c_float = 5

class FloatArray(object):
    def __init__(self, value):
        super(FloatArray, self).__init__()
        self.a = 1.5

    def __new__( cls, value ):
        obj = super(FloatArray, cls).__new__(cls)
        obj.data = c_float * value
        return obj

array_1 = FloatArray(9)

class FloatArray4(FloatArray):
    def __init__(self, value=4):
        super(FloatArray4, self).__init__(value)

    def __new__(cls, value=4):
        obj = super(FloatArray4, cls).__new__(cls, value)
        return obj

    def printValue( self ):
        print(self.a)

array_2 = FloatArray4()

array_2.printValue()