我想创建一个包装另一个类的类,这样当一个函数在包装类中运行时,也会运行一个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 3有一个名为的字符串方法 str.isidentifier
我怎样才能在Python 2.6中获得类似的功能,而不是重写我自己的正则表达式等等?
为什么if (element.innerHTML == "")不在firefox中工作
但在IE中工作正常,有什么想法吗?
我一直认为如果一个文件在没有关闭的情况下被打开就会泄漏,但我只是验证了如果我输入以下代码行,该文件将关闭:
>>> f = open('somefile.txt')
>>> del f
Run Code Online (Sandbox Code Playgroud)
出于纯粹的好奇心,这是如何工作的?我注意到该文件不包含__del __方法.
我有一个私人项目,我希望它托管在谷歌代码上.这个项目仅适用于项目成员.如何仅为项目成员启用浏览和提交SVN代码?我不希望其他人能够做到这一点.
如何禁用Google代码中对源代码的公共访问?
我正在尝试使用Python正则表达式来查找字符串中的数学表达式.问题是正斜杠似乎做了一些意想不到的事情.我原以为这[\w\d\s+-/*]*可以用于查找数学表达式,但由于某些原因,它也会找到逗号.一些实验表明,正斜杠是罪魁祸首.例如:
>>> import re
>>> re.sub(r'[/]*', 'a', 'bcd')
'abacada'
Run Code Online (Sandbox Code Playgroud)
显然,正斜杠在字符之间匹配(即使它在字符类中,但只有在存在星号时).反斜杠不会逃脱它们.我已经找了一段时间而没有找到任何关于它的文件.有什么指针吗?
我对正则表达式还是比较新的.我正在尝试找到与特定模式匹配的最短文本字符串,但如果最短模式是较大匹配的子字符串,则会遇到问题.例如:
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)
有没有办法做到这一点,而不必遍历每个匹配,看它是否包含匹配的子字符串?
有人可以解释为什么带有整数的示例会导致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) 我有一个非常长的数据,我需要快速通过它,并确保没有任何名称超过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'容器中.
python ×7
regex ×3
del ×1
file ×1
firefox ×1
google-code ×1
html ×1
identifier ×1
immutability ×1
innerhtml ×1
javascript ×1
python-2.6 ×1
python-3.x ×1