1. 程式人生 > >面向對象 反射方法

面向對象 反射方法

如果 span init pass 找到 pre 簡單的 student pan

首先看一個例子

#在面向對象中一般情況下怎麽去調屬性
class
Student: def __init__(self, name, age): self.name = name self.age = age def run(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

    def get(self):
        print(%s執行get方法 % self.__ip)

    def put(self):
        print(%s執行put方法 % self.__ip)

    def run(self):
        while True:
            cmd 
= input(請輸入命令>>:).strip() if cmd == q:break if hasattr(self, cmd): getattr(self, cmd)() else: print(命令不存在) f1 = Ftp(1.1.1.1,8080) f1.run()
###可以通過反射來實現一個簡單的c/s架構

面向對象 反射方法