首页 > 其他 > 详细

第7.5章:类——Cookbook笔记

时间:2018-06-20 20:27:14      阅读:222      评论:0      收藏:0      [点我收藏+]

obj==eval(repr(obj))

 

__slots__定长数组,代替__dict__

 

_内部实现

__名称重整

_clsname__private/method

不能通过继承覆写

子类包含父类属性的引用?默认可读写?隐式创建父类对象?从模板中导入类:类对象隐式实例化?

__对子类隐藏:继承间的可见性控制

 

对类访问:静态方法,类变量

 

访问控制:作用域——可见性;存取器——控制访问方式(增,删,改,查)

 

将属性定义为property特性

init

self.name=name  #调用setter方法

  key  value:对象(方法)

 

@property  getter  !getter必要

def name(self)

  return self._name  实例变量的属性

 

@name.setter

if not isinstance(val,type)

  raise TypeError("")

 

@name.deleter

 

del a.name

 

property:一组重载的实例方法

触发调用clsname.name.fset/fget/fdel

 

能否直接修改a._name?

 

方法与实际属性不可重名

 

将已有的存取器打包,定义为property:name=property(get_name,set_name,del_name)

 

可以用来定义计算的属性,不会实际保存,在每次访问时计算

因为返回结果是表达式,所以无法保存?存取器使用了闭包?

使用实例属性的接口统一,不需调用运算符()

两种property的实现原理一致么?一致,所以不用setter?

存取器是否实际保存?

 

如果property出现大量重复代码:替换方案:描述符,闭包

 

第7.5章:类——Cookbook笔记

原文:https://www.cnblogs.com/qmcj/p/9205500.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!