小编Sil*_*ost的帖子

自动__repr__方法

我希望有任何类的简单表示,比如{ property = value },是否有自动__repr__

python

16
推荐指数
4
解决办法
4162
查看次数

创建一个包装类来调用现有函数的pre和post函数?

我想创建一个包装另一个类的类,这样当一个函数在包装类中运行时,也会运行一个pre和post函数.我希望包装器类可以在不修改的情况下使用任何类.

例如,如果我有这个课程.

class Simple(object):
    def one(self):
        print "one"

    def two(self,two):
        print "two" + two

    def three(self):
        print "three"
Run Code Online (Sandbox Code Playgroud)

我可以像这样使用它......

number = Simple()
number.one()
number.two("2")
Run Code Online (Sandbox Code Playgroud)

到目前为止我写了这个包装类...

class Wrapper(object):
    def __init__(self,wrapped_class):
        self.wrapped_class = wrapped_class()

    def __getattr__(self,attr):
        return self.wrapped_class.__getattribute__(attr)

    def pre():
        print "pre"

    def post():
        print "post"
Run Code Online (Sandbox Code Playgroud)

我可以这样称呼......

number = Wrapper(Simple)
number.one()
number.two("2")
Run Code Online (Sandbox Code Playgroud)

除了改变第一行之外,可以使用与上面相同的内容.

我想要发生的是当通过包装类调用一个函数时,包装类中的pre函数被调用,然后是包装类中的所需函数,然后是post函数.我希望能够在不更改包装类的情况下执行此操作,也无需更改函数的调用方式,只需更改创建类实例的语法.例如number = Simple()vs number = Wrapper(Simple)

python

16
推荐指数
1
解决办法
2万
查看次数

如何在Python 2.6中获得Python isidentifer()功能?

Python 3有一个名为的字符串方法 str.isidentifier

我怎样才能在Python 2.6中获得类似的功能,而不是重写我自己的正则表达式等等?

python identifier python-2.6 python-3.x

16
推荐指数
2
解决办法
1555
查看次数

为什么if(element.innerHTML =="")在firefox中不起作用

为什么if (element.innerHTML == "")不在firefox中工作

但在IE中工作正常,有什么想法吗?

html javascript firefox internet-explorer innerhtml

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

python如何关闭已经gc'ed的文件?

我一直认为如果一个文件在没有关闭的情况下被打开就会泄漏,但我只是验证了如果我输入以下代码行,该文件将关闭:

>>> f = open('somefile.txt')
>>> del f
Run Code Online (Sandbox Code Playgroud)

出于纯粹的好奇心,这是如何工作的?我注意到该文件不包含__del __方法.

python garbage-collection file del

15
推荐指数
1
解决办法
3220
查看次数

如何禁用Google代码中对源代码的公共访问?

我有一个私人项目,我希望它托管在谷歌代码上.这个项目仅适用于项目成员.如何仅为项目成员启用浏览和提交SVN代码?我不希望其他人能够做到这一点.

如何禁用Google代码中对源代码的公共访问?

google-code

15
推荐指数
2
解决办法
1万
查看次数

在Python正则表达式中正斜杠

我正在尝试使用Python正则表达式来查找字符串中的数学表达式.问题是正斜杠似乎做了一些意想不到的事情.我原以为这[\w\d\s+-/*]*可以用于查找数学表达式,但由于某些原因,它也会找到逗号.一些实验表明,正斜杠是罪魁祸首.例如:

>>> import re
>>> re.sub(r'[/]*', 'a', 'bcd')
'abacada'
Run Code Online (Sandbox Code Playgroud)

显然,正斜杠在字符之间匹配(即使它在字符类中,但只有在存在星号时).反斜杠不会逃脱它们.我已经找了一段时间而没有找到任何关于它的文件.有什么指针吗?

python regex

15
推荐指数
2
解决办法
4万
查看次数

如何使用正则表达式找到最短的重叠匹配?

我对正则表达式还是比较新的.我正在尝试找到与特定模式匹配的最短文本字符串,但如果最短模式是较大匹配的子字符串,则会遇到问题.例如:

import re
string = "A|B|A|B|C|D|E|F|G"
my_pattern = 'a.*?b.*?c'

my_regex = re.compile(my_pattern, re.DOTALL|re.IGNORECASE)
matches = my_regex.findall(string)

for match in matches:
    print match
Run Code Online (Sandbox Code Playgroud)

打印:

A|B|A|B|C
Run Code Online (Sandbox Code Playgroud)

但是我希望它能回归:

A|B|C
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点,而不必遍历每个匹配,看它是否包含匹配的子字符串?

python regex

15
推荐指数
1
解决办法
5817
查看次数

Python参考

有人可以解释为什么带有整数的示例会导致x和y的值不同,而列表中的示例会导致x和y成为同一个对象吗?

x = 42
y = x
x = x + 1
print x # 43
print y # 42

x = [ 1, 2, 3 ]
y = x
x[0] = 4
print x # [4, 2, 3]
print y # [4, 2, 3]
x is y # True
Run Code Online (Sandbox Code Playgroud)

python immutability

15
推荐指数
2
解决办法
6821
查看次数

尝试使用超过22个字符的字符串的正则表达式

我有一个非常长的数据,我需要快速通过它,并确保没有任何名称超过22个字符.我明白我可以在显示器端截断它,但我宁愿用一个合适的解决方案解决它,只需删除它们:)

这是我的样本

$profiles[257] = array('name'=>'FedupKissingFrogs', 'age'=>27, 'sex'=>'F', 'location'=>'XXXXXXXXXX');
$profiles[260] = array('name'=>'Lil_Greta_90', 'age'=>20, 'sex'=>'F', 'location'=>'XXXXXXXXXX');
$profiles[262] = array('name'=>'lOOkfOrme86', 'age'=>24, 'sex'=>'F', 'location'=>'XXXXXXXXXX');
$profiles[259] = array('name'=>'youvefoundME', 'age'=>21, 'sex'=>'F', 'location'=>'XXXXXXXXXX');
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止提出的正则表达式,它似乎根本不起作用

'[A-Za-z]{20,40}'
Run Code Online (Sandbox Code Playgroud)

我的计划是我可以使用正则表达式标记行,然后我可以从我的IDE中删除它们.没有编程允许;)

- 编辑 -

感谢所有的答复!这背后的想法是一种快速,自动的方式来只扫描一个包含数组的平面PHP文件,看看是否所有短于22个字符的名称,作为一个比这更长的名称将打破布局,我被要求删除它们.我想在我的IDE中搜索并删除这些行.

匹配字符并不重要,任何字符都是允许的,甚至是空格,\ /〜和*等.我看起来更匹配字符串的长度但包含在=>'$name'容器中.

regex

15
推荐指数
2
解决办法
3万
查看次数