Loading

摘要: __call__(self,*args,**kwargs) 对象加括号obj()会触发所属类的__call__的执行。Python中一切皆对象,类加括号实例化对象时也会触发元类的__call__。 class Car: def __call__(self, *args, **kwargs): pri 阅读全文
posted @ 2021-01-05 21:13 吃了好多肉 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 派生 子类中新定义的属性的这个过程叫做派生,子类在使用派生的属性时始终以自己的为准。 class A1: x = 10 class B1(A1): x = 11 # 派生属性 def f1(self): # 派生方法 pass b = B1() print(b.x) 11 派生类中使用父类的属性 方 阅读全文
posted @ 2020-12-31 16:53 吃了好多肉 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 构造方法 __init__(self) 类名加括号,实例化对象时会触发执行,通常用来初始化赋值。可查看这篇__init__方法 析构方法 __del__(self) 当程序运行结束,对象在内存中被回收时,会触发执行。使用del删除对象时也会触发执行,通常用来进行一些资源回收的操作。 如果产生的对象仅 阅读全文
posted @ 2020-12-30 10:06 吃了好多肉 阅读(96) 评论(0) 推荐(0) 编辑
摘要: item系列 __getitem__(self, item) 通过中括号取值obj[item]触发它的执行,无论item是否存在。 __setitem__(self, key, value) 通过中括号赋值obj[key] = value触发它的执行,无论key是否存在。 __delitem__(s 阅读全文
posted @ 2020-12-30 10:05 吃了好多肉 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 面向对象中的魔法方法 在Python中以双下划线开头和结尾的方法都是魔法方法,在某种情况下回触发它们的执行,比如__init__方法会在类名()实例化对象时执行内部代码。魔法方法都经过处理,不遵循属性隐藏原则,可以在类外部直接通过对象.属性的方式执行。 点拦截方法 __setattr__(self, 阅读全文
posted @ 2020-12-30 10:04 吃了好多肉 阅读(113) 评论(0) 推荐(0) 编辑
摘要: isinstance(object,class) 判断对象object是否为class的实例或者是class直接、间接或虚拟子类,是则返回True。如果 object 不是给定类型的对象,函数将总是返回 False。isinstance与type类似,但type只能判断对象所属的类,不能判断基类。 阅读全文
posted @ 2020-12-29 15:54 吃了好多肉 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 类中定义的函数分为两大类 一、绑定方法 绑定给谁,谁来调用就会将它自身当做第一个参数传入: 1、绑定给类的方法:用classmethod装饰器装饰的方法。 给类使用,类名.boud_method()自动将类作为第一个参数传入。 2、绑定给对象的方法:没有被任何装饰器装饰的方法。 给对象使用,对象.b 阅读全文
posted @ 2020-12-29 15:10 吃了好多肉 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 封装 封装指的是将类中的多个属性或方法封装成一个接口,这样当我们调用这一个接口的时候,不需要去考虑该接口背后进行了什么操作,只需要知道该接口提供了什么功能即可。封装的主要优点是隔离复杂度。 # 定义一个相机类,每次照相都需要进行调整光圈、延时和按快门 class Camera: def set_ap 阅读全文
posted @ 2020-12-29 15:09 吃了好多肉 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 多态 多态指的是同一种事物有多种形态,比如水有液态、固态和气态。 一个抽象类有多个子类,因而多态的概念依赖于继承。 class Animal: def talk(self): pass class Dog(Animal): def talk(self): print('汪汪汪') class Cat 阅读全文
posted @ 2020-12-29 15:01 吃了好多肉 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 菱形继承问题 在Java中和C#中子类只能继承一个父类,而Python中子类可以继承多个父类,这就会出现多个父类中有相同属性时的属性查找顺序问题。 菱形指的是类的继承最后会形成一个闭环,一个子类的多个父类最后都会再继承同一个父类,那么它们的继承关系就是菱形结构或钻石结构。 如果继承关系为菱形结构,那 阅读全文
posted @ 2020-12-29 14:58 吃了好多肉 阅读(120) 评论(0) 推荐(0) 编辑