Python学习笔记 - 面向对象高级编程
2018-01-04 15:55
916 查看
Python学习笔记 - 面向对象高级编程
根据廖雪峰的Python教程做成的笔记,其中不包含全部知识点,仅是重点或是容易发生混淆或者忘记的部分。1. 使用slots
由于Python可以在程序执行过程中向class添加成员变量,为了防止随意添加,可以使用__slots__变量指定可以添加的成员变量。
class Student(): __slots__ = ('name', 'age') # 程序执行 s1 = Student() s1.name = 'Tom' s1.age = 10 s1.score = 99 # 此行代码会报错,因为slots中没有指定score
2. 定制类
class中凡是__xxx__形式的变量或函数名都是有特殊意义的,除
__slots__,
__init__()外,还有很多。
__str__()
class Student(): def __init__(self, name, age): self.name = name self.age = age # 测试 s1 = Student('Tom', 16) print(s1) # 输出: # <__main__.Student object at 0x000000000092E780>
显然输出不够直观,使用
__str__()后:
class Student(): def __init__(self, name, age): self.name = name self.age = age def __str__(self): return 'Student object (name:%s, age:%d)' % (self.name, self.age) # 测试 s1 = Student('Tom', 16) print(s1) # 输出: # Student object (name:Tom, age:16)
下面这些方法目前感觉华而不实,暂时不说了,用到的时候再补充。
- __iter__()
- __next__()
- __getitem__()
- __getattr__()
- __call__()
3. 枚举类
定义枚举类的两个方法:方法1:
使用枚举类,此方法默认枚举的第一个成员的值为1。
from enum import Enum Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')) for name, member in Month.__members__.items(): print(name, '=>', member, ',', member.value) # 输出: # Jan => Month.Jan , 1 # Feb => Month.Feb , 2 # Mar => Month.Mar , 3 # Apr => Month.Apr , 4 # May => Month.May , 5 # Jun => Month.Jun , 6 # Jul => Month.Jul , 7 # Aug => Month.Aug , 8 # Sep => Month.Sep , 9 # Oct => Month.Oct , 10 # Nov => Month.Nov , 11 # Dec => Month.Dec , 12
方法2:
从枚举类继承,此方法可以自定义枚举的值。
class Weekday(Enum): Sun = 0 Mon = 1 Tue = 2 Wed = 3 Thu = 4 Fri = 5 Sat = 6 for name, member in Weekday.__members__.items(): print(name, '=>', member, ',', member.value) # 输出: # Sun => Weekday.Sun , 0 # Mon => Weekday.Mon , 1 # Tue => Weekday.Tue , 2 # Wed => Weekday.Wed , 3 # Thu => Weekday.Thu , 4 # Fri => Weekday.Fri , 5 # Sat => Weekday.Sat , 6
相关文章推荐
- 【Python】学习笔记——-8.6、面向对象高级编程:6.使用元类
- python2.7学习笔记(10) ——面向对象高级编程
- 【Python】学习笔记——-8.4、面向对象高级编程:4.定制类
- 【Python】学习笔记——-8.1、面向对象高级编程:1.使用__slots__
- 【Python】学习笔记——-8.3、面向对象高级编程:3.多重继承
- 面向对象高级编程——Python学习笔记08
- 【Python】学习笔记——-8.2、面向对象高级编程:2.使用@property
- 初学Python的学习笔记9----面向对象编程(获取对象信息、实例属性和类属性)、面向对象高级编程(使用__slots__、使用@property)
- Python面向对象高级编程——学习笔记
- 【Python】学习笔记——-8.5、面向对象高级编程:5.使用枚举类
- python学习笔记(七) - 面向对象高级编程
- 廖雪峰Python教程 学习笔记11 面向对象高级编程
- Python学习--11 面向对象高级编程
- python第七天学习记录——面向对象高级以及socket编程
- Python学习-面向对象高级编程
- C++面向对象高级编程(上)学习笔记
- Python学习----面向对象高级编程
- Python3.X之面向对象高级编程笔记
- < 笔记 > Python - 08 Python 面向对象高级编程(OOP Advanced Features)
- Geekband_C++面向对象高级编程_第三周学习笔记