python 进阶4 笔记
来源:互联网 发布:客服淘宝退换货流程图 编辑:程序博客网 时间:2024/05/16 12:46
http://www.imooc.com/code/6245
要在class中定义类方法,需要这么写:
class Person(object): count = 0 @classmethod def how_many(cls): return cls.count def __init__(self, name): self.name = name Person.count = Person.count + 1print Person.how_many()p1 = Person('Bob')print Person.how_many()
通过标记一个 @classmethod,该方法将绑定到 Person 类上,而非类的实例。类方法的第一个参数将传入类本身,通常将参数名命名为 cls,上面的 cls.count 实际上相当于 Person.count。
一定要用 super(Student, self).__init__(name, gender) 去初始化父类,否则,继承自 Person 的 Student 将没有 name和 gender。
函数super(Student, self)将返回当前类继承的父类,即 Person ,然后调用__init__()方法,注意self参数已在super()中传入,在__init__()中将隐式传递,不需要写出(也不能写)。
因为Python支持高阶函数,在函数式编程中我们介绍了装饰器函数,可以用装饰器函数把 get/set 方法“装饰”成属性调用:
class Student(object): def __init__(self, name, score): self.name = name self.__score = score @property def score(self): return self.__score @score.setter def score(self, score): if score < 0 or score > 100: raise ValueError('invalid score') self.__score = score
注意: 第一个score(self)是get方法,用@property装饰,第二个score(self, score)是set方法,用@score.setter装饰,@score.setter是前一个@property装饰后的副产品。
现在,就可以像使用属性一样设置score了:
由于Python是动态语言,任何实例在运行期都可以动态地添加属性。
如果要限制添加的属性,例如,Student类只允许添加 name、gender和score 这3个属性,就可以利用Python的一个特殊的__slots__来实现。
顾名思义,__slots__是指一个类允许的属性列表:
class Student(object): __slots__ = ('name', 'gender', 'score') def __init__(self, name, gender, score): self.name = name self.gender = gender self.score = score
- python 进阶4 笔记
- Python进阶学习笔记
- Python学习笔记(进阶)
- Python学习笔记(进阶)
- python进阶笔记
- python学习笔记(进阶)
- Python进阶学习笔记-2
- python基础学习笔记<进阶>
- Python 进阶学习笔记1
- Python 进阶学习笔记2
- Python进阶笔记(4)_ 面向对象编程基础
- python进阶强化-4
- Python学习笔记20:服务器进阶
- python进阶学习笔记1-2
- Python的学习笔记(二)(进阶)
- Python进阶笔记(5)_ 继承
- 小白的python笔记(进阶)
- Python进阶学习笔记(一)
- SizeClass With Xcode6(Xcode6 中使用SizeClass布局)
- 深入剖析printf函数(下):---形参列表和格式化输出是如何做到的?
- 第六天
- POJ1178枚举三个地方(所有点都去同一个点)
- HNU Number Guessing
- python 进阶4 笔记
- Framework启动过程
- flexibility of openstack(4)
- Android UI设计: 仿ios,仿qq实现Listview侧滑出现按钮
- [BZOJ 2456] mode · 模拟
- 基于可信QoS的服务聚类研究
- 十六进制字符串转换成UIColor对象
- 树状数组【模板】
- POJ1201基础差分约束