小编Ian*_*and的帖子

子类化Python字典以覆盖__setitem__

我正在构建一个子类dict和覆盖的类__setitem__.我想确定我的方法将在可能设置字典项的所有实例中被调用.

我发现了三种情况,Python(在这种情况下,2.6.4)__setitem__在设置值时不会调用我的重写方法,而是PyDict_SetItem直接调用

  1. 在构造函数中
  2. setdefault方法中
  3. update方法中

作为一个非常简单的测试:

class MyDict(dict):
    def __setitem__(self, key, value):
        print "Here"
        super(MyDict, self).__setitem__(key, str(value).upper())

>>> a = MyDict(abc=123)
>>> a['def'] = 234
Here
>>> a.update({'ghi': 345})
>>> a.setdefault('jkl', 456)
456
>>> print a
{'jkl': 456, 'abc': 123, 'ghi': 345, 'def': '234'}
Run Code Online (Sandbox Code Playgroud)

您可以看到仅在显式设置项时才调用重写的方法.为了让Python始终调用我的__setitem__方法,我不得不重新实现这三种方法,如下所示:

class MyUpdateDict(dict):
    def __init__(self, *args, **kwargs):
        self.update(*args, **kwargs)

    def __setitem__(self, key, value):
        print "Here"
        super(MyUpdateDict, self).__setitem__(key, value)

    def update(self, *args, **kwargs): …
Run Code Online (Sandbox Code Playgroud)

python dictionary subclass

42
推荐指数
1
解决办法
3万
查看次数

键入时强调输入字段

我有一个输入字段,当我开始键入文本时显示下划线.这不是自动更正下划线,而是黑色下划线,因为我尝试禁用自动完成和拼写检查.这只出现在android jelly bean手机上.

<input type="search" id="searchInput" class="searchInput" placeholder="placeholder" />
Run Code Online (Sandbox Code Playgroud)

强调

我已从输入标记中删除了所有css,我所做的任何事情都将禁用此下划线.

一旦我从输入字段中移除焦点,下划线就会消失.

知道如何防止这种情况吗?

html5 android android-4.2-jelly-bean

6
推荐指数
1
解决办法
1710
查看次数