您可以像这样扩展defaultdict():
class Ext(defaultdict): 我该如何扩展string-default变量:
defaultdict(str, .....) 我希望它是这样的:
class Ext(defaultdict):
def __init__(self, str_arg, **args):
super(Ext,self).__init__(str, **args)str_arg是这样的,所以我可以跳过第一个参数,并且总是像defaultdict(str,{})那样实例化它。
发布于 2019-08-28 11:37:49
像这样的东西?
class Ext(defaultdict):
def __init__(self):
super(Ext, self).__init__(str)换句话说,您不希望忽略__init__()的第一个参数;您希望为超类__init__()方法调用提供一个额外的参数。
(当然,如果您想在子类__init__中接受更多参数,请将这些参数放回原处。)
发布于 2019-08-28 11:54:23
我不认为这是一个好主意,但如果您坚持开发一个仅在default_factory为str时才起作用的defaultdict子类,您可以简单地这样声明:
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')https://stackoverflow.com/questions/57684068
复制相似问题