物件導向 反射方法

2022-02-09 08:57:40 字數 1614 閱讀 1694

首先看乙個例子

#在物件導向中一般情況下怎麼去調屬性

class

student:

def__init__

(self, name, age):

self.name =name

self.age =age

defrun(self):

print('

*****====>')

class

teacher(student):

pass

stu1 = student('

zhuyu

', 19)

print(stu1.name) #

其本質就是 stu1.__dict__['name']

print(stu1.__dict__['

name

'])

# 反射:就是通過字串的形式去操作屬性

#

學好下面四個方法就好

hasattr(stu1, '

name

') #

就相當於student.name,如果能找到name屬性,就列印返回值true,報錯了的話,就列印返回值false

getattr(stu1, '

run', none) #

獲取物件中的屬性,沒有的話會將第三個引數作為返回值

setattr(stu1, '

salary

', 5000) #

設定屬性 第乙個引數物件,第二個引數是屬性,第三個引數是屬性的值

print(stu1.__dict__

)delattr(stu1,

'salary

') #

刪除乙個屬性

print(stu1.__dict__)

# 下面講乙個使用反射的乙個例子

class

ftp:

def__init__

(self, ip, port):

self.

__ip =ip

self.

__port =port

defget(self):

print('

%s執行get方法

' % self.__ip

)

defput(self):

print('

%s執行put方法

' % self.__ip

)

defrun(self):

while

true:

cmd = input('

請輸入命令》:

').strip()

if cmd == '

q':break

ifhasattr(self, cmd):

getattr(self, cmd)()

else

:

print('

命令不存在')

f1 = ftp('

1.1.1.1

',8080)

f1.run()

###可以通過反射來實現乙個簡單的c/s架構

物件導向 反射

內建函式 1.isinstance 判斷乙個物件和乙個類有沒有血緣關係class a pass class b a pass a b print isinstance a,b true print isinstance a,a true print type a is b true print ty...

物件導向 多型 類方法 反射 (四)

抽象類鴨子型別 類方法isinstance 與 issubclass 反射多型 指一種型別的事物,擁有多種形態 為了不同的事物呼叫,產生不同的結果 作用 為了在不知道物件具體型別的情況下,同一物件呼叫方法的規範。先抽象,再繼承 父類 定製一套統一的規範 子類 遵循父類的統一的規範。多型的三種表現形式...

python 物件導向反射以及內建方法

一 反射 什麼是反射 可以用字串的方式去訪問物件的屬性,呼叫物件的方法 但是不能去訪問方法 python中一切皆物件,都可以使用放射。反射的四種方法 hasattr hasattr object.name 判斷乙個物件是否有name屬性或者是name方法。有就返回true,沒有就返回false ge...