Dav*_*vid 4 python constructor new-operator
我想封装一个python数组来修复它的类型代码并将其隐藏起来.我以为我可以使用派生来实现这一点,但是我无法构造我的Type,因为它缺少必需的参数:
class MyBinaryBuffer(array.array):
def __init__(self):
array.array.__init__(self, 'B') #this is the fixed 'B' typecode parameter for
#array.array() constructor
myBuffer = MyBinaryBuffer()
Run Code Online (Sandbox Code Playgroud)
我明白了:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: array() takes at least 1 argument (0 given)
Run Code Online (Sandbox Code Playgroud)
我怎么能以自然的方式实现这个呢?
经过一些研究,我发现我应该使用构造函数.
编辑:斯文Marnach建议增加自其向我指出添加缺少的CLS parmeter在__ 新 __版本,它的工作原理.
class MyBinaryBuffer(array.array):
def __new__(cls):
return super(MyBinaryBuffer, cls).__new__(cls, 'B')
myBuffer = MyBinaryBuffer()
Run Code Online (Sandbox Code Playgroud)
您需要使用该__new__方法,因为__init__它已经构建好了.但你不要super在那里使用.
class OctetString(array):
def __new__(cls):
return array.__new__(cls, 'c')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1187 次 |
| 最近记录: |