簡體   English   中英

從函數調用返回時重寫類方法

[英]Override a class method when it is returned from a function call

我知道如何重寫類方法( python中的類和繼承 ),但是有時您會得到一個類對象,作為從函數調用返回的實例(我正確地說了嗎?)現在想更改此類返回實例的方法之一(或更改整個類)。 我該怎么做呢? 我知道可以按照此答案中所述重寫實例方法,但是據說這不是一種干凈的方法。

我的情況:

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方法。 謝謝你的幫助!

這聽起來像是使用裝飾器的最佳案例,或者您可以在MyDataBase中編寫一個將SQL字符串作為參數的方法,將其記錄下來,然后調用self.cur.execute 我認為,這是擴展/覆蓋第三方對象的首選方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM