Python27天 反射 ,isinstance与ssubclass 内置方法

所学内容

反射

1、hasattr ( 判断一个属性在对象里有没有 ) -------------------- 【对象,字符串属性】本质是:# 判断 ' name ' in obj.__dict__

2、getattr ( 获取对象中字符串的属性 ) --------------------------- 【对象,第三参数,字符串属性】本质是:# 从一个字典 obj.__dict__ [ ' name ' ]

3、setattr ( 一个属性的赋值操作 ( 设置值,修改值 ) )---------【对象,属性,值】setattr  本质是:# obj.__dict__ [ ' FFY ' ]

4、delattr ( 删除属性操作 ) ------------------------------------------ 【删除属性】delattr 本质是:# 通过字符串来操作字典,但不要直接操作字典

内置方法

__str__ :在对象被打印时自动触发,可以用来定义对象被打印的输出信息(注意:必须返回一个字符串类型的值)

__del__ :在对象被删除时先自动触发该方法,可以用来回收对象以外其他相关资源

isinstance与ssubclass 

isinstance(对象,类)--------------------- 判断一个对象是否是一个类的实例

issubclass(子类,父类)------------------ 判断一个类是否是另一个类的子类

反射的用法

 1 class Ftp:
 2     def get(self):
 3         print('get')
 4 
 5     def put(self):
 6         print('put')
 7 
 8     def login(self):
 9         print('login')
10 
11     def run(self):
12         while True:
13             cmd = input('>>>: ').strip()  # cmd='get'
14             if hasattr(self, cmd):
15                 method = getattr(self, cmd)
16                 method()
17             else:
18                 print('输入的方法不存在')
19 
20 
21 obj = Ftp()
22 obj.run()

内置的用法

__str__ :在对象被打印时自动触发,可以用来定义对象被打印的输出信息(注意:必须返回一个字符串类型的值)

 1 class People:
 2     def __init__(self, name, age):
 3         self.name = name
 4         self.age = age
 5 
 6     def __str__(self):
 7         # print('run..........')
 8         return '<name:%s age:%s>' % (self.name, self.age)
 9 
10 
11 obj1 = People('egon', 18)
12 print(obj1)  # print(obj1.__str__())
13 
14 obj2=list([1,2,3])
15 print(obj2)

__del__ :在对象被删除时先自动触发该方法,可以用来回收对象以外其他相关资源

 1 class Foo:
 2     def __init__(self,x,filepath,encoding='utf-8'):
 3         self.x=x
 4         self.f=open(filepath,'rt',encoding=encoding)
 5 
 6     def __del__(self):
 7         print('run.....')
 8         # 回收对象关联的其他资源
 9         self.f.close()
10 
11 obj=Foo(1,'a.txt')
12 # del obj
13 print('主===========>')

isinstance与issubclass的用法

 1 class Bar:
 2     pass
 3 
 4 
 5 class Foo(Bar):
 6     pass
 7 
 8 
 9 obj = Foo()
10 print(issubclass(Foo, Bar))
11 
12 print(isinstance(obj, Foo))
原文地址:https://www.cnblogs.com/zedong/p/9526435.html