Tag: python

定义`__eq__`的types是不可以的?

将function移植到我的程序的Python 3.1分支时,出现了一个奇怪的错误。 我缩小到以下假设: 与Python 2.x相反,在Python 3.x中,如果一个对象具有.__eq__方法,则它自动不可用。 这是真的? 以下是Python 3.1中发生的情况: >>> class O(object): def __eq__(self, other): return 'whatever' >>> o = O() >>> d = {o: 0} Traceback (most recent call last): File "<pyshell#16>", line 1, in <module> d = {o: 0} TypeError: unhashable type: 'O' 后续的问题是,我该如何解决我的个人问题? 我有一个ChangeTracker对象,它存储了一个WeakKeyDictionary ,它指向了几个对象,在过去的某个时间点给出了它们的pickle dump的值。 每当一个已经存在的对象被检入时,变更跟踪器就会说新的pickle是否与旧的pickle是一样的,因此说明对象是否已经改变了。 问题是,现在我甚至不能检查给定的对象是否在库中,因为它会引发一个关于不可对象的exception。 (因为它有一个__eq__方法。)我该如何解决这个问题?

命名Pythonlogging器

在Django中,我有遍布各处的logging器,目前使用硬编码的名称。 对于模块级别的日志logging(即在一个查看function模块),我有这样做的冲动。 log = logging.getLogger(__name__) 对于类级别的日志logging(即,在类__init__方法)我有这样做的冲动。 self.log = logging.getLogger("%s.%s" % ( self.__module__, self.__class__.__name__)) 在我解决了getLogger("hard.coded.name")之前,我正在寻找第二个意见。 这会工作吗? 其他人用同样的缺乏想象力的方式命名他们的伐木工? 此外,我应该分解并为这个日志定义写一个类装饰器?

最好的python XMPP / Jabber客户端库?

您对Python Jabber / XMPP客户端库有什么经验? 你有什么build议?

Python中可转换的STFT和ISTFT

是否有任何通用的短时傅立叶变换forms,并在SciPy或NumPy中内置相应的逆变换? 在matplotlib中有pyplot specgram函数,它调用ax.specgram() ,它调用mlab.specgram() ,它调用_spectral_helper() : #The checks for if y is x are so that we can use the same function to #implement the core of psd(), csd(), and spectrogram() without doing #extra calculations. We return the unaveraged Pxy, freqs, and t. 但 这是一个帮助函数,实现204 #psd,csd和频谱图之间的通用性。 这并不意味着在mlab之外使用 不过,我不确定这是否可以用来做STFT和ISTFT。 还有什么,或者我应该翻译像这些MATLAB函数 ? 我知道如何编写我自己的临时实现; 我只是寻找一些function齐全的,可以处理不同的窗口function(但有一个理智的默认),完全可逆COLA窗口( istft(stft(x))==x ),由多人testing,没有逐个错误,处理结束和零填充,为实际input快速RFFT实现等。

检查对象列表是否包含具有特定属性值的对象

我想检查我的对象列表是否包含具有特定属性值的对象。 class Test: def __init__(self, name): self.name = name # in main() l = [] l.append(Test("t1")) l.append(Test("t2")) l.append(Test("t2")) 我想要一个检查列表是否包含名称为t1的对象的方式。 如何做呢? 我发现https://stackoverflow.com/a/598415/292291 , [x for x in myList if xn == 30] # list of all matches any(xn == 30 for x in myList) # if there is any matches [i for i,x in enumerate(myList) if […]

如何修复Python的鼻子:覆盖率不可用:无法导入覆盖率模块

尽pipe安装了插件,但我似乎无法使用鼻子获得代码覆盖范围。 有想法该怎么解决这个吗? 12:15:25 ~/sandbox/ec$ nosetests –plugins Plugin xunit Plugin deprecated Plugin skip Plugin multiprocess Plugin failuredetail Plugin capture Plugin logcapture Plugin coverage Plugin attributeselector Plugin doctest Plugin profile Plugin id Plugin allmodules Plugin collect-only Plugin isolation Plugin pdb 12:15:34 ~/sandbox/ec$ nosetests -v –with-coverage nose.plugins.cover: ERROR: Coverage not available: unable to import coverage module tests.edgecast_client_tests.test_log … […]

如何在Python中获取逐行MySQL结果集

在完成任何工作之前,MySQL ResultSets默认从服务器完全检索。 在巨大的结果集的情况下,这变得不可用。 我希望实际上从服务器中逐一检索行。 在Java中,按照这里的说明(在“ResultSet”下),我创build了一个像这样的语句: stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY); stmt.setFetchSize(Integer.MIN_VALUE); 这在Java中很好地工作。 我的问题是:是否有办法在Python中做同样的事情? 我试过的一件事是限制查询一次1000行,如下所示: start_row = 0 while True: cursor = conn.cursor() cursor.execute("SELECT item FROM items LIMIT %d,1000" % start_row) rows = cursor.fetchall() if not rows: break start_row += 1000 # Do something with rows… 但是,这似乎越慢,start_row越高。 不,使用fetchone()而不是fetchall()不会改变任何东西。 澄清: 我用来重现这个问题的天真的代码如下所示: import MySQLdb conn = MySQLdb.connect(user="user", passwd="password", db="mydb") […]

使用Python进行URL编码/解码

我正在尝试编码和存储,并在Python中解码参数,并在途中迷路了。 这是我的步骤: 1)我使用谷歌工具包的gtm_stringByEscapingForURLArgument正确地转换NSString传递到HTTP参数。 2)在我的服务器(python)中,我将这些string参数存储为u'1234567890-/:;()$&@".,?!\'[]{}#%^*+=_\\|~<>\u20ac\xa3\xa5\u2022.,?!\'' (请注意,这些是“123”视图和“#+ =”视图的iphone键盘上的标准键, \u和\x \u \x在那里有一些货币前缀像英镑,日元等) 3)我调用urllib.quote(myString,'')存储的值,大概是% – 转义他们运输到客户端,所以客户端可以不正当地逃脱他们。 结果是,当我尝试logging%转义的结果时,出现exception。 是否有一些关键的步骤,我忽略了需要适用于存储的值与\ u和\ x格式为了正确地将其转换为通过HTTP发送? 更新 :标记为下面的答案的build议为我工作。 不过,我正在提供一些更新来解决下面的评论。 我收到的例外引用了\u20ac一个问题。 我不知道这是否是一个具体的问题,而不是它是string中的第一个Unicode字符。 这个字符是“欧元”符号的统一码。 我基本上发现我会遇到问题,除非我使用urllib2 quote方法。

Python 3中的相对导入无法正常工作

我有以下目录: mydirectory ├── __init__.py ├── file1.py └── file2.py 我有一个函数f在file1.py中定义。 如果在file2.py中,我这样做 from .file1 import f 我得到以下错误: SystemError:父模块未加载,无法执行相对导入 为什么? 以及如何使其工作?

从装饰者访问自我

在unittest的setUp()方法中,我已经设置了一些自variables,这些自variables稍后在实际testing中被引用。 我也创build了一个装饰器来做一些日志logging。 有没有一种方法可以从装饰器访问这些自variables? 为了简单起见,我发布了这个代码: def decorator(func): def _decorator(*args, **kwargs): # access a from TestSample func(*args, **kwargs) return _decorator class TestSample(unittest.TestCase): def setUp(self): self.a = 10 def tearDown(self): # tear down code @decorator def test_a(self): # testing code goes here 从装饰器访问(在setUp()中设置)的最佳方式是什么?