我想创建自己的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
任何人都有一个想法如何实现?
最佳答案
import sqlite3
class MyConnect(sqlite3.Connection):
def cursor(self):
return super(MyConnect, self).cursor(MyCursor)
class MyCursor(sqlite3.Cursor):
def mymethod1(self, argv):
print('Got here')
conn = sqlite3.connect(':memory:', factory=MyConnect)
print(conn)
# <__main__.MyConnect object at 0x90db66c>
cursor = conn.cursor()
print(cursor)
# <__main__.MyCursor object at 0x90d19dc>
cursor.mymethod1('foo')
# Got here
在此示例中,
super(MyConnect, self).cursor(MyCursor)
调用sqlite3.Connection.cursor(MyCursor)
。sqlite3.Connection.cursor接受可选参数
cursorClass
。提供时,这是用于实例化游标的类。关于python - Python:如何成功继承Sqlite3.Cursor并添加我的自定义方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23683886/