2020Python修煉記 物件導向程式設計 反射

2022-01-29 02:32:59 字數 2672 閱讀 5384

class

people:

def__init__

(self,name,age):

self.name=name

self.age=age

defsay(self):

print('

<%s:%s>

' %(self.name,self.age))

obj=people('

辣白菜同學

',18)

#實現反射機制的步驟

#1、先通過多dir:檢視出某乙個物件下可以.出哪些屬性來

print

(dir(obj))

#2、可以通過字串反射到真正的屬性上,得到屬性值

print(obj.__dict__[dir(obj)[-2]])

# 輸出結果:['

__class__

', '

__delattr__

', '

__dict__

', '

__dir__

', '

__doc__

', '

__eq__

', '

__format__','

__ge__

', '

__getattribute__

', '

__gt__

', '

__hash__

', '

__init__

', '

__init_subclass__

', '

__le__

', '

__lt__

', '

__module__

', '

__ne__

', '

__new__

', '

__reduce__

', '

__reduce_ex__

', '

__repr__

', '

__setattr__

', '

__sizeof__

', '

__str__

', '

__subclasshook__

', '

__weakref__

', '

age', '

name

', '

say'

]辣白菜同學

class

teacher:

def__init__

(self,full_name):

self.full_name =full_name

t=teacher('

egon lin')

#hasattr(object,'name')

hasattr(t,'

full_name

') #

按字串'full_name'判斷有無屬性t.full_name

#getattr(object, 'name', default=none)

getattr(t,'

full_name

',none) #

等同於t.full_name,不存在該屬性則返回預設值none

#setattr(x, 'y', v)

setattr(t,'

age',18) #

等同於t.age=18

#delattr(x, 'y')

delattr(t,'

age') #

等同於del t.age

obj=10

if hasattr(obj,'x'

):

print(getattr(10,'x'

))else

:

pass

print(getattr(obj,'x'

,none))

if hasattr(obj,'x'

): setattr(obj,'x

',111111111) #

10.x=11111

else

:

pass

class

ftp:

defput(self):

print('

正在執行上傳功能')

defget(self):

print('')

definteractive(self):

method=input("

>>>:

").strip() #

method='put'

ifhasattr(self,method):

getattr(self,method)()

else

:

print('

輸入的指令不存在')

obj=ftp()

obj.interactive()

#執行結果:

#none

#>>>: put

#正在執行上傳功能##

程序已結束,退出** 0

2020Python練習十 函式的引數

2020.3.18 1 寫函式,使用者傳入修改的檔名,與要修改的內容,執行函式,完成批量修改操作 def modify file filename,old,new import os with open filename,r encoding utf 8 as read f,open bak.swa...

2020 Python從入門到不放棄自學筆記3

迴圈結構練習 原題為判斷乙個輸入的數值是不是質數 我把這個題目加以改造,迴圈生成所有質數 使用了 while for迴圈結構 x 2 定義初始值 prime 定義乙個空列表 while x 0 無限迴圈,此處也可以用while true y 0 定義初始可整除次數 for i in range 2 ...

2020 Python從入門到不放棄自學筆記4

今日練習 實現將乙個正整數反轉,例如 將12345變成54321 書上的標準答案 正整數的反轉 version 0.1 author 駱昊 num int input num reversed num 0while num 0 reversed num reversed num 10 num 10 ...