类:uuu new_uuu和uuu init_uuu在Python中的继承类中

类:uuu new_uuu和uuu init_uuu在Python中的继承类中,python,python-3.x,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 objec

我有一门课是这样的:

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\u 2=FloatArray4(4)
,我不希望这样,我希望它被这样调用
array\u 2=FloatArray4()
,但我不知道如何调用

其次,当我试图调用
array\u 2.printValue()
时,我遇到了一个错误:
AttributeError:'c\u float\u array\u 4'对象没有属性“printValue”

谁能帮忙吗


谢谢。

您的
\uuuu new\uuuu()
正在返回一个完全不相关的类的实例,这是一件极不寻常的事情。(我真的不知道为什么允许这样做。)你的
\uuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuo()
永远不会被调用,你的方法或属性也不可用,因为结果对象在任何意义上都不是你的类的实例。

你的
\uuuuuuuuuuu,这是一件非常不寻常的事情。(我真的不知道为什么允许这样做。)你的
\uuu init\uuu()
永远不会被调用,你的任何方法或属性都不可用,因为生成的对象在任何意义上都不是你的类的实例。

什么是
c\u float
?@dawg c\u float是ctypes类型。既然你有了
\uuuuu init\uuuuu
\uuu new\uuuuuuu
这两种方法,那么你可能需要在这里陈述一下你想要实现的目标。不清楚为什么要重写
\uuuuu new\uuuuuuu
,以及您希望从中得到什么。什么是
c\u float
?@dawg c\u float是ctypes类型。既然你有了
\uuuuu init\uuuuu
\uuu new\uuuuuuu
这两种方法,那么你可能需要在这里陈述一下你想要实现的目标。不清楚您为什么要覆盖
\uuuuu new\uuuu
,以及您希望从中得到什么。
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()