day34 反射、面向对象内置方法:如__str__、面向对象的软件开发

Python之路,Day21 = 反射、面向对象内置方法:如__str__、面向对象的软件开发

 

几个内置查看的方法使用

.__base__ 查看类的继承结构
.mro() 对象找属性的顺序存在里面

 

 

-----课程内容-----

---反射

hasattr(object, name)
getattr(object, name, default)
defult 找不到的时候,返回default
setattr(object, key, values)
delattr(object, key)

 

 

---面向对象内置方法

isinstance(obj, type) # 查看是不是它的实例issubclass(child, parent) # 查看是否为子类

__str__
打印对象的时候会触发 object.__str__() 这个方法,返回值必须是字符串
如 print(object)

 

__del__
对象销毁的时候执行这个函数下的内容,可以用来处理一些对象小时候的善后工作

 

__getitem__
f['name']

__setitem__
f['name'] = 'zhang'

__delitem__
del f['name']

 

 1 class Foo:
 2     def __init__(self,name,age,sex):
 3         self.name=name
 4         self.age=age
 5         self.sex=sex
 6     def __getitem__(self, item):
 7         # print(self,item,type(item))
 8         # return getattr(self,item)
 9         return self.__dict__[item]
10     def __setitem__(self, key, value):
11         # setattr(self,key,value)
12         self.__dict__[key]=value
13 
14     def __delitem__(self, key):
15         # delattr(self,key)
16         self.__dict__.pop(key)
17 
18     def __len__(self):
19         return 10
20 f=Foo('egon',18,'male')
21 # print(f.name) #f['name']
22 # print(f.age) #f['age']
23 # print(f.sex) #f['sex']
24 
25 # print(f['name'])
26 
27 # f['name']='egon_nb'
28 # print(f.__dict__)
29 # del f['name']
30 # print(f.__dict__)
31 
32 print(len(f))

 

posted on 2017-07-07 18:13  何必从头  阅读(118)  评论(0编辑  收藏  举报

导航