文章较长,仔细看吧
零碎重点:
1. 首先举个例子帮你理解一下类。 百灵鸟类就是鸟类的一个子类,而鸟类就是百灵鸟类的超类。
2. PS:python中类习惯上使用单数名词,并且首字母大写。
3.类的实例:所有对象都属于某一个类,而这就是类的实例。
一张简单的草图可以快速帮你理解他们之间的关系
创建自己的类:
以代码来解释如何创建以及注意事项。
代码的解释和注意事项:
Person: 类的名字,class语句会在函数定义地方创建自己的命名空间。
在新式类语法中,需要在模块或者脚本开始的地方防止赋值语句:_metaclass_ = type 。
代码中直接调用类的部分就是指的类的实例。
代码快速理解:
把类比作图纸,类的实例化对象是真正可以居住的房子。一个图纸可以设计出成千上万的房子,长得都差不多。但是它们都可以由不同的主人,self相当于每个房子的门牌号,由self就可以轻松找到家。
self: 变量的对象自身,对自己的引用。self参数实际上正是方法和函数的区别。
问题延伸:
怎么让方法和特性便的私有(从外部无法访问)?
在定义它的名字前面加上双下划线__。
eg : def __inaceessible(self):
漏洞:其实可以访问的,你可以理解为前面加上单下划线的类名格式形式。
指定超类(超类也叫做父类,基类,超类)
用法:将其他类名写在class语句后的圆括号内指定超类
解释:Filter是一个用于过滤序列的通用类,Filter类的用处在于它可以用作其他类的超类,比如SPAMFilter类,可以将序列中的"SPAM"过滤出去。
多个超类:
代码涉及到了多重继承,是非常有用的,但是尽量少用。
类的特性与函数,方法:(这一块我们全部用上文中指定超类的代码为例子)
issubclass函数: 查看一个类是不是另外一个的子类。
>>> issubclass(SPAMFilter,Filter)
True
>>> issubclass(Filter,SPAMFilter)
False
__bases__特性:查看已知类的超类(们)。
__dict__特性:查看对象中所有存储的值