Python Learn 3 -- 面向对象编程,面向对象高级编程

以下为对廖雪峰Python的学习笔记

面向对象编程

  1. 在Python中,实例的变量名如果以__(两个下划线__)开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问
  2. 需要注意的是,在Python中,变量名类似__xxx__的,也就是以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的,不是private变量
  3. 判断对象类型,使用type()函数
  4. 判断class的类型,可以使用isinstance()函数
  5. 能用type()判断的基本类型也可以用isinstance()判断,以判断是否是list或者tuple
  6. dir():
    获得一个对象的所有属性和方法,可以使用dir()函数,它返回一个包含字符串的list,比如,获得一个str对象的所有属性和方法
  7. 对于静态语言(例如Java)来说,如果需要传入Animal类型,则传入的对象必须是Animal类型或者它的子类,否则,将无法调用run()方法。
  8. 对于Python这样的动态语言来说,则不一定需要传入Animal类型。我们只需要保证传入的对象有一个run()方法就可以了
  9. Python是动态语言,根据类创建的实例可以任意绑定属性。
    10.类属性属于类所有,所有实例共享一个属性; 不要对实例属性和类属性使用相同的名字,否则将产生难以发现的错误。

面向对象高级编程

  1. __slots__变量:限制该class实例能添加的属性
  2. @property广泛应用在类的定义中,可以让调用者写出简短的代码,同时保证对参数进行必要的检查,这样,程序运行时就减少了出错的可能性。
  3. MixIn:在设计类的继承关系时,通常,主线都是单一继承下来的。但是,如果需要“混入”额外的功能,通过多重继承就可以实现,这种设计通常称之为MixIn。
  4. Python的class允许定义许多定制方法,非常方便地生成特定的类。详细见python官方文档
  5. 定制类__str__():返回用户看到的字符串
  6. 定制类__repr__():返回程序开发者看到的字符串,即__repr__()是为调试服务的。
  7. 定制类__iter__():如果一个类想被用于for … in循环,类似list或tuple那样,就必须实现一个__iter__()方法
  8. 定制类__getitem__():现得像list那样按照下标取出元素,需要实现__getitem__()方法
  9. 定制类__getattr__():调用属性不存在是,动态返回一个属性
  10. 定制类__call__():直接在实例本身上调用。另__call__()还可以定义参数。通过callable()函数,我们就可以判断一个对象是否是“可调用”对象。
  11. @unique装饰器可以检查Enum保证没有重复值。
  12. Enum可以把一组相关常量定义在一个class中,且class不可变,而且成员可以直接比较。
  13. 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的。
  14. metaclass,直译为元类,先定义metaclass,就可以创建类,最后创建实例。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值