Tag: python

在Python中重写一个静态方法

在这里提到关于python绑定和非绑定方法的第一个答案 ,我有一个问题: class Test: def method_one(self): print "Called method_one" @staticmethod def method_two(): print "Called method_two" @staticmethod def method_three(): Test.method_two() class T2(Test): @staticmethod def method_two(): print "T2" a_test = Test() a_test.method_one() a_test.method_two() a_test.method_three() b_test = T2() b_test.method_three() 产生输出: Called method_one Called method_two Called method_two Called method_two 有没有办法在Python中重写静态方法? 我期望b_test.method_three()打印“T2”,但不打印(改为打印“调用method_two”)。

inheritancePython字典以覆盖__setitem__

我正在build立一个子类dict ,并覆盖__setitem__ 。 我想确定我的方法将在所有可能设置字典项目的情况下被调用。 我发现了三种情况,Python(在本例中为2.6.4)在设置值时不会调用覆盖的__setitem__方法,而是直接调用PyDict_SetItem 在构造函数中 在setdefault方法中 在update方法中 作为一个非常简单的testing: 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'} 您可以看到,只有在明确设置项目时才会调用重写的方法。 为了让Python总是调用我的__setitem__方法,我不得不重新实现这三个方法,像这样: class MyUpdateDict(dict): def __init__(self, *args, **kwargs): […]

在Python中调用拦截方法

我正在Python中实现一个REST风格的Web服务,并希望通过拦截函数调用并logging它们的执行时间等来添加一些QOS日志loggingfunction。 基本上我想到了一个其他所有服务都可以inheritance的类,它自动覆盖默认的方法实现,并将它们包装在一个logging器函数中。 什么是达到这个目的的最好方法?

目录pathtypes与argparse

我的Python脚本需要从命令行传递的目录中读取文件。 我已经定义了一个如下所示的readable_dirtypes,用于argparse来validation在命令行上传递的目录是否存在并且可读。 此外,还为目录参数指定了默认值(下例中的/ tmp / non_existent_dir)。 这里的问题是,即使在命令行中显式传入目录参数的情况下,argparse也会调用默认值的readable_dir()。 这会导致脚本出错,因为默认path/ tmp / non_existent_dir不存在于通过命令行显式传入目录的上下文中。 我可以通过不指定默认值并强制使用此参数来解决此问题,也可以在稍后的脚本中推迟validation,但这是任何人都知道的更优雅的解决scheme? #!/usr/bin/python import argparse import os def readable_dir(prospective_dir): if not os.path.isdir(prospective_dir): raise Exception("readable_dir:{0} is not a valid path".format(prospective_dir)) if os.access(prospective_dir, os.R_OK): return prospective_dir else: raise Exception("readable_dir:{0} is not a readable dir".format(prospective_dir)) parser = argparse.ArgumentParser(description='test', fromfile_prefix_chars="@") parser.add_argument('-l', '–launch_directory', type=readable_dir, default='/tmp/non_existent_dir') args = parser.parse_args()

如何根据scrapy中的URL过滤重复的请求

我正在为使用Scraw和CrawlSpider的网站编写爬虫程序。 Scrapy提供了一个内置的重复请求filter,它根据url来过滤重复的请求。 另外,我可以使用CrawlSpider的规则成员来过滤请求。 我想要做的是过滤请求,如: http:://www.abc.com/p/xyz.html?id=1234&refer=5678 如果我已经去过 http:://www.abc.com/p/xyz.html?id=1234&refer=4567 注意:引用是一个参数,不会影响我得到的响应,所以我不在乎如果该参数的值更改。 现在,如果我有一个积累所有ID的集合,我可以忽略它在我的callback函数parse_item (这是我的callback函数)来实现这个function。 但是这意味着我至less还可以拿到那个页面,当我不需要的时候。 那么我可以告诉scrapy它不应该基于url发送特定请求的方式是什么?

用于Python 3.x的MySQL-db库?

所以,寻找一个与py3k / py3.0 / py3000兼容的mysql-db-lib,有什么想法? 谷歌什么都没有。

Pandas中的T-testing(Python)

如果我想计算pandas的两个类别的平均值,我可以这样做: data = {'Category': ['cat2','cat1','cat2','cat1','cat2','cat1','cat2','cat1','cat1','cat1','cat2'], 'values': [1,2,3,1,2,3,1,2,3,5,1]} my_data = DataFrame(data) my_data.groupby('Category').mean() Category: values: cat1 2.666667 cat2 1.600000 我有很多这样格式化的数据,现在我需要做一个T -test来看看cat1和cat2的平均值是否有统计学差异。 我怎样才能做到这一点?

如何从Flask @ app.route打印到python控制台

我想简单地打印一个“hello world”到用户调用/ button之后的python控制台。 这是我的天真做法: @app.route('/button/') def button_clicked(): print 'Hello world!' return redirect('/') 背景:我想从瓶子(而不是shell)执行其他python命令。 “打印”应该是最简单的情况。 我相信我还没有理解这里的一个基本的扭曲。 提前致谢!

在Python中以列表(循环方式)迭代对

这个问题很简单,我想遍历列表中的每个元素和下一个成对的元素(用最后一个元素包装)。 我曾经想过两种不合理的方式: def pairs(lst): n = len(lst) for i in range(n): yield lst[i],lst[(i+1)%n] 和: def pairs(lst): return zip(lst,lst[1:]+[lst[:1]]) 预期产出: >>> for i in pairs(range(10)): print i (0, 1) (1, 2) (2, 3) (3, 4) (4, 5) (5, 6) (6, 7) (7, 8) (8, 9) (9, 0) >>> 任何关于更pythonic这样做的build议? 也许有一个预定义的function,我没有听说过? 也是更普遍的n倍(与三胞胎,四重奏,而不是对)版本可能是有趣的。

在Python中生成HTML文档

在python中,生成HTML文档的最优雅的方法是什么? 我目前手动将所有的标签附加到一个巨大的string,并将其写入一个文件。 有没有更好的方法来做到这一点?