python 判斷類屬性 方法 是否存在

2021-09-22 02:09:34 字數 1284 閱讀 1494

hasattr()

andcallable()

# 這樣子來判斷的

# 這樣子會更好

invert_op =

getattr

(self,

"invert_op"

,none)if

callable

(invert_op)

: invert_op(self.path.parent_op)

一.實現動態執行某個類中的函式

#例項化類物件

atobj=acttest(

)

#動態呼叫類函式語句

getattr(atobj ,funcname)(args) #funcname->要呼叫的函式名,args->函式的引數

簡單吧!不過這樣呼叫如果funcname傳入的是acttest類中不存在的函式或屬性,就會丟擲異常,就需要下面的判斷過程。

二.判斷類屬性是否存在

#我一般用callable來實現屬性是否存在的判斷,**如下

if

callable

(getattr

(atobj ,funcname)):

getattr

(atobj ,funcname)

(args)

#上面的語句還需要acttest這樣實現
class

acttest

(object):

def__init__

(self)

: self.xx=

'123'

# 這個函式是關鍵,作用是獲取屬性!

def__getattribute__

(self, name)

:try

: r=

object

.__getattribute__(self, name)

except

: r=

none

return r

python在呼叫類屬性時就會執行getattribute,當獲取異常時(這裡只認為屬性不存在),返回none;

那麼callable(getattr(atobj ,funcname))就會返回false,我們就能根據這個結果決定是否動態呼叫函式了!

也有見過一種是

python 類屬性方法 例項屬性方法

型別 描述類變數 靜態變數 所有例項共有,每個例項可以不加self呼叫 類方法 靜態方法 所有例項共有,每個例項都可以呼叫 例項變數 非靜態變數 單個例項所有,需通過self呼叫 例項方法 非靜態方法 單個例項所有,下例中class name是類屬性,所有的例項都具有該屬性,而且任何乙個例項修改都可...

python 類屬性 用處 Python類屬性詳解

類屬性1.類定義後就存在,而且不需要例項化 2.類屬性使得相同類的不同例項共同持有相同變數 類屬性例項 attrb.py class testcss cssa class attribe def init self self.a 0 self.b 10 def info self print a s...

Python 類屬性和方法

import types class dog object slots name color info 定義 slots 該類中只允許 類物件 動態增加 name,color,info,body len 屬性或方法 都是例項屬性或方法 slots 對類的 動態新增屬性和方法 沒有限制,而 類物件 不...