扩展“specific”defaultdict(str,...)?

2024-04-25 02:04:48 发布

您现在位置:Python中文网/ 问答频道 /正文

可以这样扩展defaultdict():

class Ext(defaultdict):  

如何扩展字符串默认变量:

defaultdict(str, .....) 

我希望这是一个大致的过程:

class Ext(defaultdict):

   def __init__(self, str_arg, **args):
         super(Ext,self).__init__(str, **args)

str_arg是这样,我就可以跳过第一个参数,总是像defaultdict(str,{})那样实例化它。你知道吗


Tags: 实例字符串self参数init过程defarg
2条回答

我不认为这是个好主意,但是如果你坚持要开发一个defaultdict的子类,它只在default_factorystr的情况下才起作用,你可以这样说:

from collections import defaultdict


class MyDict(defaultdict):
    def __init__(self, *args, **kwargs):
        super(MyDict, self).__init__(*args, **kwargs)
        assert self.default_factory is str


# in action:

try:
    x = MyDict(str)
    print('Fine')
except AssertionError:
    print('Unexpected')

try:
    x = MyDict(int)
    print('Should not work')
except AssertionError:
    print('Expected issue')

像这样的?你知道吗

class Ext(defaultdict):
    def __init__(self):
        super(Ext, self).__init__(str)

换句话说,您不希望忽略__init__()的第一个参数;您希望为超类__init__()方法调用提供一个附加参数。你知道吗

(如果你想接受更多的参数给你的子类__init__,当然要把它们放回去。)

相关问题 更多 >