您的位置:首页 > 编程语言 > Python开发

python学习---5

2015-12-21 15:56 597 查看
面向对象高级编程

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 = value
4)多重继承

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” 博客,谢绝转载!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: