【发布时间】:2014-05-16 00:53:24
【问题描述】:
我想创建自己的 MagicCursor 类。我希望它从 sqlite3.Cursor() 继承所有方法和属性。但在他的情况下看起来并不那么容易。
通常我们会像这样创建一个游标:
import sqlite3
conn = sqlite3.connect('test.db')
crs = conn.cursor()
因为两者之间存在联系。所以我想我必须定义我自己的连接类,然后定义我自己的光标。
这是我想要实现的:
import sqlite3
conn = MyConnect('test.db') ## this returns me a connect object, inherit from sqlite3.Connection
crs = conn.cursor() ## this returns me a MyCursor class,
## which inherit from sqlite3.Cursor() and has my customized method
这是我的代码,但失败了。
class MyConnect(sqlite3.Connection):
def cursor(self):
return MyCursor(self)
class MyCursor(sqlite3.cursor):
def __init__(self, connect):
self = connect.cursor()
def mymethod1(self, argv)
...... return ...... ## what ever I defined
有人知道如何实现吗?
【问题讨论】:
-
我不相信你想重新分配
self就像你在__init__方法中所做的那样。那不应该是sqlite3.cursor.__init__(self)(或类似的东西)吗? Sqlite3 是我系统上的编译扩展 - 您必须查找调用签名并查看它如何(或是否)支持连接参数。您可能无法以这种方式将方法添加到已编译的扩展中。