Обезьяна, исправляющая расширение C в Python - PullRequest
2 голосов
/ 27 марта 2012

Используя метод, рассмотренный в вопрос 972 , я не смог обезопасить патч метода cursor () в psycopg:

Пытался исправить метонд в psycopg2 с помощью типов , но это не сработало:

>>> import psycopg2, types
import psycopg2, types
>>> db = psycopg2.connect('dbname=foo')
db = psycopg2.connect('dbname=foo')
>>> def mycursor(self):
def mycursor(self):
...     db.rollback()
    db.rollback()
...     return self.cursor()
    return self.cursor()
... 

>>> db.mycursor = types.MethodType(mycursor, db)
db.mycursor = types.MethodType(mycursor, db)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'psycopg2._psycopg.connection' object has no attribute 'mycursor'
>>> 

Это потому что это расширение C?

1 Ответ

3 голосов
/ 27 марта 2012

Правильно.Для типов, определенных в C, нельзя добавлять произвольные атрибуты.

...