[python高级编程]:02-类

此系列主要用于记录Python学习过程中查阅的优秀文章,均为索引方式。其中内容只针对本作者一人,作者熟悉了解的内容不再重复记录。

目录

01-装饰器

        装饰器的实现

        @overload -- 方法重载

        @property -- 只读属性

02-双下划线方法(魔法方法)

        属性(方法)查询入口:getattr, __getattr__, __getattribute__

        描述符:__get__,__set__,__delete__

03-多态

        多态和鸭子类型

04-设计模式

        抽象基类和接口

05-方法/函数参数

        参数传递:强制关键字方式传递


01-装饰器

        装饰器的实现

                Python进阶——如何实现一个装饰器? - 知乎 (zhihu.com)

1. [python高级编程]:01-数据结构-CSDN博客(闭包相关内容)

2. 装饰器其实就是先定义好一个闭包,然后使用语法糖 @ 来装饰方法,最后达到重新定义方法的作用。也就是说,最终我们执行的,其实是另外一个被添加新功能的方法。

        @overload -- 方法重载

                【Python】Python中的@overload装饰器 - 知乎 (zhihu.com)

1. @overload装饰器其实只是一种注解/提示:该函数允许传入不同的参数类型组合。最终,所有加了@overload装饰器的方法都会被一个不加装饰器的方法覆盖掉。

        @property -- 只读属性

                properties - How does the @property decorator work in Python? - Stack Overflow

                一文详述 Python 中的 property 语法 - 知乎 (zhihu.com)

1. 只读属性设置。

2. 类比JAVA中,私有属性的设置就是不想让数据被误取出来,增加一个方法去获取私有属性或者修改私有属性,那么就保证将来想获取属性的时候就获取,想修改的时候还可以进行过滤。

02-双下划线方法(魔法方法)

        属性(方法)查询入口:getattr, __getattr__, __getattribute__

                getattr, __getattr__, __getattribute__和__get__区别 - 知乎 (zhihu.com)

1. getattr()是python内置的一个函数,它可以用来获取对象的属性和方法。其主要实现形式便是在对应类中继承或重写"__getattribute__"和"__getattr__"方法。

2. object类中包含"__getattribute__"方法,在重写时应注意super().__getattribute__()调用,否则会出现无限递归的问题。

3. 其中"__getattr__"方法主要用于访问未知属性、方法时设置默认值、初始化、阻止"AttributeError"异常等。

        描述符:__get__,__set__,__delete__

                Python进阶——什么是描述符? - 知乎 (zhihu.com)

                python之 描述符(__get__,__set__,__delete__)-CSDN博客

1. 描述符的作用是用来代理另外一个类的属性的,可以使用描述符实现属性校验器功能。

03-多态

        多态和鸭子类型

                python中对多态的理解 - 知乎 (zhihu.com)

                如何理解Python中的鸭子类型(duck typing)? - 知乎 (zhihu.com)

1. Java基础(多态的理解与应用)_java多态-CSDN博客

2. 多态 - 廖雪峰的官方网站 (liaoxuefeng.com)(Java多态)

3. 在面向对象方法中一般是这样表述多态性:向不同的对象发送同一条消息,不同的对象在接收时会产生不同的行为(即方法)。

4. python中变量的使用不用声明,所以不存在父类引用指向子类对象的多态体现,同时python不支持重载。

5. 鸭子类型在程序设计中是动态类型的一种风格。在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由"当前方法和属性的集合"决定

04-设计模式

        抽象基类和接口

                【进阶Python】第七讲:接口与抽象基类-阿里云开发者社区 (aliyun.com)

1. 抽象类 - 廖雪峰的官方网站 (liaoxuefeng.com) (Java抽象类)

2. 接口 - 廖雪峰的官方网站 (liaoxuefeng.com) (Java接口)

3. Python可通过abc库实现抽象基类和接口,但并不支持纯接口实现,另鸭子类型也是一种设计模式。

05-方法/函数参数

        参数传递:强制关键字方式传递

1. 第一个*号的作用为:在使用self, *,这种方式时,*的作用是将 self 参数之后的参数视为强制使用关键字方式传递,不能再使用位置参数。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chandni.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值