python学习---5
2015-12-21 15:56
597 查看
面向对象高级编程
1)给类或者实例绑定一个方法
限制class的属性,规定哪几个属性可以在创建实例的时候添加属性。
3)使用@property
装饰器,既能检查参数,又可以用类似属性的方法来调用访问类的变量
实现方式:
@property 把一个getter方法变成属性
@xxx.setter 由@property创建出来的另外一个装饰器。负责把setter变成属性用来赋值
xxx就是函数名了。保持一致
eg:
多重继承有几个缺点。
结构复杂化,多个父类又有父类,就很复杂
顺序模糊,先继承谁,不清楚
功能冲突,相同方法名,该使用谁的方法
继承用单一继承
两个以上的多重继承必须用迷信继承
Mix-in 类是具有以下特征的抽象类:
不能单独生成实例;
不能继承普通类。
关于迷信继承:
http://snoopyxdy.blog.163.com/blog/static/6011744020146311737593/ 5)定制类
__slots__()
__len__()
__str__()
__iter__()
__getitem__()
__getattr__()
__call__()
6)type() and metaclass
type讲解了由类到创建实例的过程
metaclass主要用于操作数据库
ORM框架
本文出自 “ehealth” 博客,谢绝转载!
1)给类或者实例绑定一个方法
from types import MethodType给实例绑定:
s.set_age=MethodType(set_age,s,Student) set_age:函数 s 实例 Student:类名给类绑定
Student.set_age=MethodType(set_age,None,Student)2)使用__slots__
限制class的属性,规定哪几个属性可以在创建实例的时候添加属性。
3)使用@property
装饰器,既能检查参数,又可以用类似属性的方法来调用访问类的变量
实现方式:
@property 把一个getter方法变成属性
@xxx.setter 由@property创建出来的另外一个装饰器。负责把setter变成属性用来赋值
xxx就是函数名了。保持一致
eg:
class Student(object): @property def score(self): return self._score @score.setter def score(self, value): if not isinstance(value, int): raise ValueError('score must be an integer!') if value < 0 or value > 100: raise ValueError('score must between 0 ~ 100!') self._score = value4)多重继承
class bat(mammal,flyable)Mixin 迷信
多重继承有几个缺点。
结构复杂化,多个父类又有父类,就很复杂
顺序模糊,先继承谁,不清楚
功能冲突,相同方法名,该使用谁的方法
继承用单一继承
两个以上的多重继承必须用迷信继承
Mix-in 类是具有以下特征的抽象类:
不能单独生成实例;
不能继承普通类。
关于迷信继承:
http://snoopyxdy.blog.163.com/blog/static/6011744020146311737593/ 5)定制类
__slots__()
__len__()
__str__()
__iter__()
__getitem__()
__getattr__()
__call__()
6)type() and metaclass
type讲解了由类到创建实例的过程
metaclass主要用于操作数据库
ORM框架
本文出自 “ehealth” 博客,谢绝转载!
相关文章推荐
- python 常用 time, datetime处理
- 基于python实现微信模板消息
- Python字符串连接
- python中迷信继承
- [python]在场景中理解装饰器
- python下分析网页的好工具:BeautifulSoup
- Python内置函数学习
- Python GET REMOTE SERVER'S INFO
- Python读写文件
- python主要用来做什么
- Python 元组、列表、字典、字符串的操作
- python 获取管理微信应用菜单
- python_index
- 每天学点Python之tuple
- 每天学点Python之set
- Python Network Programming -Gethostname&ip_address
- python如何实现远程控制电脑(结合微信)
- python代码打包
- suds for Python3.X
- python学习---4