python學習筆記 反射

2022-08-25 21:48:25 字數 2632 閱讀 1148

反射# 通過字串的形式對物件中的成員進行操作(獲取/查詢/新增/刪除)。

操作的內建函式:

1.獲取   getattr(object, name) 

# 去物件object中獲取name的內容

class

foo:

def__init__

(self, name, age):

self.name =name

self.age =age

obj = foo('

lemon147

', 18)

v = getattr(obj, '

name')

print

(v)>>>lemon147

add = getattr(obj, '

add', '

not find!

') #

如果物件obj中有屬性add則返回self.add的值,否則返回'not find'!

print

(add)

>>> not find!

getattr

2.查詢  hasattr(object, name)

# 檢查物件object中是否有name

class

foo:

def__init__

(self, name, age):

self.name =name

self.age =age

obj = foo('

lemon147

', 18)

setattr(obj,

'add

', '

123'

)print(getattr(obj, '

add'

))delattr(obj,

'add')

add = hasattr(obj, '

add'

)print

(add)

>>>false

hasattr

3.新增  setattr(object, name,value)

# 在物件object中設定name的值為value

class

foo:

def__init__

(self, name, age):

self.name =name

self.age =age

obj = foo('

lemon147

', 18)

setattr(obj,

'add

', '

123'

)add = hasattr(obj, '

add'

)print

(add)

>>>true

print(getattr(obj, '

add'

)) >>>123

setattr

4.刪除  delattr(object, name)

# 刪除物件object中的成員name

class

foo:

def__init__

(self, name, age):

self.name =name

self.age =age

obj = foo('

lemon147

', 18)

setattr(obj,

'add

', '

123'

)print(getattr(obj, '

add'

))delattr(obj,

'add')

add = hasattr(obj, '

add'

)print(add)

deaattr

注:getattr,hasattr,setattr,delattr對模組的修改都在記憶體中進行,並不會影響檔案中真實內容。

應用場景

根據輸入或選擇,動態的呼叫不同的模組或功能。(同字典-dictionary 通過key,查詢對應的value類似。)

def

s1():

return'首頁

'def

s2():

return'新聞

'def

s3():

return'精華

'

test002

import

test002

foo =true

while

foo:

inp = input('

請輸入您要查詢的內容,輸入『q』退出:

') #

輸入『s1』執行『首頁』

ifhasattr(test002, inp):

v =getattr(test002, inp)

print

(v())

elif inp == 'q'

:

break

else

:

print('

輸入有誤

')

test001

Java學習筆記 反射

使用反射操作類 import org.junit.test public class testdemo 要對乙個類進行例項化有兩種方法 1 可以new 2 不new 使用反射獲取方式如下 操作無參構造方法 操作無引數的構造方法 test public void test1 throws except...

Golang學習筆記 反射

反射讓我們可以在執行時獲取物件的型別資訊,比如檢視乙個結構體有多少字段,檢視函式的入參型別和返回值型別等。go提供了reflect.typeof 和reflect.valueof獲取任意物件的reflect.value和reflect.type,其中reflect.type是乙個介面型別,該介面提供...

python基礎學習 反射

所謂的反射,就是通過字串去訪問類或物件成員,比如如果乙個student類有乙個name物件屬性,那麼就可以通過乙個 name 字串去訪問student物件的name屬性 如python可以通過hasattr 函式來獲取乙個物件是否有某個屬性 class student def init self,n...