类: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()