魔法方法day22课堂小结

昨日回顾:

​ 1.组合

​ 一个类产生的对象是另一个对象的属性

​ 组合是为了减少代码的冗余。

2.封装

​ 什么是封装:

​ 特征:属性属性,即类中的变量

​ 技能:方法属性,即类中的函数

​ 把一堆属性(特征与技能)封装一个对象中,对象就好比一个袋子。

​ 封装的目的:

​ 封装的目的是为了可以通过 对象.属性的方式对数据进行存取。

​ 如何封装:

​ 在类内部定义

​ 通过对象.属性的方式添加属性

​ 3.访问限制机制

​ 访问限制机制是什么:

​ 在类内部,凡是以__开头的属性都不能被类外部‘直接’访问,python对其做了变形(隐藏)。

​ 例如:__name-->_类名__name

​ 访问限制机制目的是什么:

​ 防止使用者在外部对隐私数据进行修改,保证数据安全

​ 4.property装饰器

​ 用来装饰在类内部的方法中,使该方法不用加括号都可以调用

​ 5.多态

​ 什么是多态:

​ 同一种事物的多种形态

​ 多态的目的:

​ 让父类定义一套标准,子类遵循父类定义的一套标准。

​ 如何多态:

​ —子类继承父类,遵循父类的标准

​ —子类继承抽象类,强制子类必须遵循父类的标准

​ —鸭子类型,所有类都遵循一套鸭子类型标准

​ 鸭子类型:

​ 只要看起来像鸭子,叫声也是鸭子,那么就是鸭子类型

​ 在不知道对象具体类型的情况下,拥有相同的方法

classmethod与staticamethod

classmethod:

翻译:一个类方法

classmethod是一个装饰器,可以装饰给类内部的方法,使该方法绑定给类来使用。

​ —对象的绑定方法特殊之处

​ 由对象来调用,会将对象当作第一个参数传给该方法。

​ —类的绑定方法特殊之处

​ 由类来调用,会将类当作第一个参数传给该方法。

staticmethod:

​ staticmethod是一个装饰器,可以装饰给类内部的方法,使该方法既不绑定给对象,也不绑定给类。

isinstance与issubclass

__class__:对象的属性,获取该对象的类。

—isinstance(参数1,参数2):

​ python内置的函数,可以传入两个参数,用于判断参数1是否是参数2的一个实例。

​ 判断一个对象是否是一个类得到实例。

—issubclass(参数1,参数2):

​ python内置的函数,可以传入两个参数,用于判断参数1是否是参数2的子类。

​ 判断一个类是否是另一个类的子类

反射

​ 反射:指的是通过'字符串'对 对象或类的属性进行操作。

	- hasattr: 通过字符串,判断该字符串是否是对象或类的属性。
	- getattr:  获取对象或类的属性。
	- setattr:  设置对象或类的属性 。
	- delattr:  删除对象或类的属性。

魔法方法

​ 凡是在类内部定义,以__开头__结尾的方法都称之为魔法方法,又称‘类的内置方法’

​ 魔法方法会在某些条件成立时触发。

__init__: 在调用类时触发

__str__: 会在打印对象时触发

__del__: 对象被销毁前执行该方法,该方法会在最后执行

__getattr__: 会在对象.属性时,‘属性没有’ 的情况下才会触发

__setattr_: 会在‘对象.属性 = 属性值' 时触发

__call__: 会在对象被调用时触发

__new__: 会在__init__执行前触发

原文地址:https://www.cnblogs.com/shin09/p/11663977.html