考虑以下:
@property
def name(self):
if not hasattr(self, '_name'):
# expensive calculation
self._name = 1 + 1
return self._name
Run Code Online (Sandbox Code Playgroud)
我是新手,但我认为缓存可能会被装入装饰器中.只有我找不到喜欢它的人;)
PS真正的计算不依赖于可变值
我想要一个带有一个附加属性的字符串,让我们说是用红色还是绿色打印它.
子类化(str)不起作用,因为它是不可变的.我看到了价值,但它可能很烦人.
多重遗产有帮助吗?我从来没用过那个.
仅继承对象并使用self.value = str意味着我必须自己实现所有字符串消息(如strip).
或者有没有办法转发它们,比如Ruby的missing_method?
我认为使用实例索引的类级别字典来存储颜色可能会起作用.太丑了?
我有目录号到产品名的映射:
35 cozy comforter
35 warm blanket
67 pillow
Run Code Online (Sandbox Code Playgroud)
并且需要一个能够找到拼写错误的混合名称的搜索,例如"warm cmfrter".
我们使用edit-distance(difflib)编写代码,但它可能无法扩展到18000个名称.
我实现了与Lucene类似的东西,但由于PyLucene只包装了Java,这会使部署复杂化到最终用户.
SQLite通常没有编译的全文或评分.
该Xapian的绑定就像是C++,并且有一定的学习曲线.
嗖尚未详细记录,但包括滥用的拼写检查.
那里还有什么?
我需要通过提供多种实现来使模块中的一个函数独立于平台,而不更改导入它的任何文件。以下作品:
do_it = getattr(__import__(__name__), "do_on_" + sys.platform)
...但是如果将模块放入包中则会中断。
另一种选择是使用 if/elif 来硬编码调用 do_it() 中的其他函数。
还有更好的吗?
如何重写这种新方法来识别在Python中工作的地址?
\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))
(我确定这是一个FAQ,但也很难google)
为什么Python使用abs(x)而不是x.abs?
据我所知,abs()除了调用之外x.__abs__还可以在object.abs()中实现
它是历史的吗,因为根本不存在根类?
如何告诉Safari在当前窗口的新选项卡中打开URL?
这与使用AppleScript的新Safari选项卡中的Open URL重复,但其答案不再适用于当前版本的Safari(5.1 on 10.6.8).选项卡已创建但为空:
tell front window of application "Safari"
make new tab with properties {URL:"http://www.stackoverflow.com"}
end tell
Run Code Online (Sandbox Code Playgroud)
如果您创建一个新的"文档"而不是URL,但这会打开一个窗口.
对于它的价值,我将此报告为Apple的一个错误.但是解决方法会很棒.
python ×6
applescript ×1
caching ×1
database ×1
decorator ×1
fuzzy-search ×1
gruber ×1
immutability ×1
oop ×1
regex ×1
safari ×1
string ×1