首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扩展“特定”defaultdict(str,...)?

扩展“特定”defaultdict(str,...)?
EN

Stack Overflow用户
提问于 2019-08-28 09:44:11
回答 2查看 104关注 0票数 0

您可以像这样扩展defaultdict():

代码语言:javascript
复制
class Ext(defaultdict):  

我该如何扩展string-default变量:

代码语言:javascript
复制
defaultdict(str, .....) 

我希望它是这样的:

代码语言:javascript
复制
class Ext(defaultdict):

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

str_arg是这样的,所以我可以跳过第一个参数,并且总是像defaultdict(str,{})那样实例化它。

EN

回答 2

Stack Overflow用户

发布于 2019-08-28 11:37:49

像这样的东西?

代码语言:javascript
复制
class Ext(defaultdict):
    def __init__(self):
        super(Ext, self).__init__(str)

换句话说,您不希望忽略__init__()的第一个参数;您希望为超类__init__()方法调用提供一个额外的参数。

(当然,如果您想在子类__init__中接受更多参数,请将这些参数放回原处。)

票数 1
EN

Stack Overflow用户

发布于 2019-08-28 11:54:23

我不认为这是一个好主意,但如果您坚持开发一个仅在default_factorystr时才起作用的defaultdict子类,您可以简单地这样声明:

代码语言:javascript
复制
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')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57684068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档