(总结)python 3程序开发指南(六)面向对象程序设计

本文深入探讨了Python面向对象编程的核心概念,包括类的继承、特殊方法如__len__和__add__的实现、访问控制的技巧、以及如何正确使用__new__和__init__方法。同时,文章还讲解了如何使类实例支持hash、比较操作,以及如何通过property装饰器管理和访问对象属性。此外,还介绍了静态方法、类方法的使用场景,以及pickling和copy模块的高级用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.在python中每个内置的类、类库以及我们创建的每个类都直接或间接地从最顶层的基类----object类衍生而来。

2.我们可以通过在类中实现__len__、__add__方法来支持len()、add()函数

3.python面向对象编程没有提供的两个功能:第一个是重载,第二个是明确的访问控制,但是我们可以通过在属性名前加以两个下划线引导,python 就会组织无心的访问.

4.python类中所有对象属性(属性以及方法属性)都必须由self进行指定。

5.任何一个类都含有特殊方法__new__属性,一般我们不需要对其进行重写。一般先调用__new__来创建对象,然后调用__init__初始化对象。

6.自定义类的所有实例都是可hash的,但是当我门重新实现__eq__方法后,他就不再可hash,除非你重新实现__hash__方法。

7.自定义类的所有实例都是支持==,这种比较总是返回False

8.如果我们希望避免不适当的比较,可以通过断言实现:assert isinstance(other, Point)

9.__repr__方法返回结果有两种类型:一种可以使用内置的eval()函数进行评估,并生成一个与repr()调用对象的等价的对象;另一种会返回字符串。

10.property()修饰器函数是一个内置函数,至多可以接受4个参数:一个获取者函数,一个设置者函数,一个删除者函数,以及一个docstring。使用@property的效果与仅使用一个参数(获取者函数)效果相同。

11。所有对象都具备python自动提供的某些特殊方法,其中一种方法称为__class__,实际上是对对象类的一个引用.所有类都有一个私有的__name__属性,也是由python自动提供的.

12.提供hash函数时:

 可以这样:

   def __hash__(self):

            return hash(id(self))

id(self)返回对象独一无二的ID值。

 13。注意使用python的staticmethod和classmethod

14.高级取消实现每个不需要的方法的使用

15.注意del语句和pop语句的区别是后者可以在不存在时隐式的调用而不产生错误。

16.pickling可将python对象序列化转换为字节序列或字符串,它处理的可以是组合数据类型,处理方便,但是pickle没有安全机制(没有加密,也没有进行数字签名)

17.copy.copy()被调用时,将首先尝试使用对象的特殊方法__copy__(),如果对象没有提供该方法就再返回执行自己的代码(类似__deepcopy__)

转载于:https://my.oschina.net/taisha/blog/55364

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值