獲取類的物件資訊

2022-03-05 05:03:23 字數 1291 閱讀 9703

# 首先你有乙個command.py檔案,內容如下,這裡我們假若它後面還有100個方法

class myobject(object):

def __init__(self):

self.x = 9

def add(self):

return self.x + self.x

def pow(self):

return self.x * self.x

def sub(self):

return self.x - self.x

def div(self):

return self.x / self.x

# 然後我們有乙個入口檔案 exec.py,要根據使用者的輸入來執行後端的操作

from command import myobject

computer=myobject()

def run():

inp = input('method>')

if inp == 'add':

computer.add()

elif inp == 'sub':

computer.sub()

elif inp == 'div':

computer.div()

elif inp == 'pow':

computer.pow()

else:

print('404')

上面使用了if來進行判斷,那麼假若我的command裡面真的有100個方法,那我總不可能寫100次判斷吧,所以這裡我們就會用到python的反射特性,看下面的** 

from command import myobject

computer=myobject()

def run(x):

inp = input('method>')

# 判斷是否有這個屬性

if hasattr(computer,inp):

# 有就獲取然後賦值給新的變數

func = getattr(computer,inp)

print(func())

else:

# 沒有我們來set乙個

setattr(computer,inp,lambda x:x+1)

func = getattr(computer,inp)

print(func(x))

if __name__ == '__main__':

run(10)

其實本章的內容,很多涉及到動態載入模組類

獲取物件資訊

print type 123 int print type abc str import types def fn pass print type fn types.functiontype print type abs types.builtinfunctiontype print type la...

python 獲取物件資訊

判斷物件型別,使用type 函式 判斷乙個物件是否是函式 使用types模組中定義的常量 import types type abs types.builtinfunctiontype true type lambda x x types.lambdatype true type x for x i...

Python類的繼承 多型及獲取物件資訊操作詳解

繼承 類的繼承機制使得子類可以繼承父類中定義的方法,擁有父類的財產,比如有乙個animal的類作為父類,它有乙個eat方法 class animal object def init self print animal 構造函式呼叫!def eat self print animal is eatti...