从函数调用返回时重写类方法

时间:2014-10-13 17:16:37

标签: python

我知道如何覆盖类方法(an-introduction-to-classes-and-inheritance-in-python),但有时你得到一个类对象作为从函数调用返回的实例(我说的正确吗?)现在想要改变其中一种方法返回实例(或整个类)。我该怎么做呢?我知道可以覆盖this answer中描述的实例方法,但是它说这不是一种干净的方法。

我的情况:

import pyodbc
import logging

class MyDataBase(object):

    def __init__(self):
        self.db = pyodbc.connect(cnxn_str)
        self.cur = self.db.cursor()
    # Now I want to override the cursor method execute

    def self.cur.execute(self, sql_str):
        logging.debug(sql_str)
        super(cursor.execute)

显然这段代码不太对,考虑伪代码。问题实际上是如何增强游标对象的execute方法。 谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

这听起来像是使用装饰器的主要情况,或者您可以在MyDataBase中编写一个方法,将SQL字符串作为参数,记录它,然后调用self.cur.execute。在我看来,这是扩展/覆盖第三方对象的首选方式。