在Python中動態繫結property

2021-05-10 20:46:45 字數 662 閱讀 2252

在python中可以把property動態的繫結的object的繼承類中,並且可以定義帶有引數的get和set方法。

比如,我們定義了全域性變數g,然後通過兩個方法來訪問g的內容

def get_g(self):

return g

def set_g(self, _g):

global g

g = _g

定義乙個object的繼承類a:

class a(object):

pass

然後可以通過setattr把乙個property動態的bind到a中:

setattr(a, 'g', property(get_g, set_g))

我們我們可能還要對動態bind做一些定製,比如我們可能有兩個全域性變數,g1和g2,希望在繫結時動態的決定到底是綁誰,那麼我們就可以這麼做:

def get_pp(name):

def get_g(self):

return globals()[name]

def set_g(self, _g):

globals()[name] = _g

return property(get_g, set_g)

然後可以setattr(a, 'g', get_pp('g1') ),從而把g1關聯到的a的『g』屬性。

C 中動態繫結

動態繫結 dynamic binding 將繫結 binding 即解析型別 成員和操作的過程從編譯時延遲到執行時。動態繫結適用於那些開發者知道某個特定的函式 成員或操作的存在,而編譯器不知道的情況。這種情況通常出現在操作動態語言 例如 ironpython 和com時。在這些情況下,如果不使用動態...

C 中動態繫結和靜態繫結

c 中,非虛函式都是靜態繫結,而虛函式卻是動態繫結。為了能夠更清楚地了解靜態繫結與動態繫結,我們可以看下面這個例子 include using namespace std class b 那麼兩次呼叫fun 函式是否相同呢?當然,如果d中沒有定義fun 函式 如例子中 那麼兩次呼叫的行為肯定會是一樣...

C 中動態繫結和靜態繫結

2009 03 27 15 35 1053人閱讀收藏 舉報c funclass 編譯器c c 中,非虛函式都是靜態繫結,而虛函式卻是動態繫結。為了能夠更清楚地了解靜態繫結與動態繫結,我們可以看下面這個例子 include using namespace std class b 那麼兩次呼叫fun 函...