内容来源于网络,本人只是在此稍作整理,如有涉及版权问题,归小甲鱼官方所有。
1.python数据类型补充说明:
当我们定义一个class的时候,我们实际上就定义了一种数据类型。
我们定义的数据类型和Python自带的数据类型,比如str、list、dict没什么两样。
举例说明:

2.继承:
super的用法:super函数超级之处在于你不需要明确给出任何基类的名字,它会自动帮你找出所有基类以及对应的方法。由于你不用给出基类的名字,这就意味着你如果需要改变类继承关系,你只要改变class语句里的父类即可,而不必在大量代码中修改所有被继承的方法。

3.组合:
组合就是把类的实例化放到一个新的类里面



![]()
4.类和对象相关的BIF:
issubclass(class, classinfo)
如果第一个参数是第二个参数的一个子类,则返回True,否则返回False:
1️⃣一个类被认为是其自身的子类。
2️⃣classinfo可以是类对象组成的元组,只要class是其中任何一个候选类的子类,则返回True。
3️⃣在其他情况下,会抛出一个TypeError异常。

isinstance(object, classinfo)
如果第一个参数是第二个参数的实例对象,则返回True,否则返回False:
1️⃣如果object是classinfo的子类的一个实例,也符合条件。
2️⃣如果第一个参数不是对象,则永远返回False。
3️⃣classinfo可以是类对象组成的元组,只要object是其中任何一个候选对象的实例,则返回True。
4️⃣如果第二个参数不是类或者由类对象组成的元组,会抛出一个TypeError异常。

hasattr(object, name)
attr即attribute的缩写,属性的意思。其作用就是测试一下对象里是否有指定的属性。
第一个参数是对象,第二个参数是属性名(用引号括起来‘’),举个例子:

getattr(object, name[, default])
返回对象指定的属性值,如果指定的属性不存在,则返回default(可选参数)的值;若没有设置default参数,则抛出AttributeError异常。

- setattr(object, name, value)
用来设置对象中指定属性的值,如果指定的属性不存在,则新建属性并赋值。

- delattr(object, name)
用来删除对象中指定的属性,如果属性不存在,则抛出AttributeError异常。



- property(fget=None, fset=None, fdel=None, doc=None)
用来通过属性来设置属性。 - property()函数中的三个函数分别对应的是获取属性的方法、设置属性的方法以及删除属性的方法,这样一来,外部的对象就可以通过访问x的方式,来达到获取、设置或删除属性的目的。当需要更改上例中的getSize、setSize或delSize函数的名称时,如果这些方法是作为接口让用户调用的,那么对用户而言就要修改自己调用的方法名,很麻烦,使用了proprty()后,用户就不需担心这种问题了。


5.构造和析构
构造方法1:__init__(self[,...])
这个方法一般用于初始化一个类;__init__()方法的返回值是None
但是,当实例化一个类的时候,__init__()并不是第一个被调用的,第一个被调用的是__new__()

一般在需要进行初始化的时候才重写__init__()方法,而且记住改方法的返回值一定是None(或者也可以理解没有返回值)。
构造方法2:__new__(cls[,...])
__new__()方法是创建类实例的方法,创建对象时调用,返回当前对象的一个实例。下面是当继承一个不可变的类型的时候,他的特征就显得尤为重要了。

析构方法:__del__(self)
该方法时当垃圾回收机制回收这个对象时调用的。
所有指向它的变量(所有对他的引用)都被del之后,才会启动垃圾回收机制。
del x不等于x.__del__()

本文介绍了Python中类的定义、继承机制的super函数用法,以及组合的概念。重点讲解了isinstance(), hasattr(), getattr(), setattr(), delattr()和property()等类和对象操作的内置方法。同时探讨了构造方法__init__和__new__的区别,以及析构方法__del__的运用。
1742

被折叠的 条评论
为什么被折叠?



