首页 > Note > python 学习笔记 — python的类

python 学习笔记 — python的类

2016年12月3日 发表评论 阅读评论

1 创建类

使用 class 关键字来创建一个类。

类的注释可由 ClassName.__doc__ 来查看。class_suite 由类的成员、方法、属性组成

实例

  • __init__() 可以看作是类的构造函数。(其实类的构造函数是 __new__ ,它是一个类方法 ,在类的实例初始化之前调用。__init__  实际是类的初始化函数)
  • self 代表类的实例,类的方法必须有一个额外的形参,按惯例它的名称为self,但在调用时不必传入该参数。
  • __del__() 是类的析构函数,在对象被销毁的时候调用。

2 类的实例

要创建一个类的实例,可以调用该一特殊的函数来完成。该函数的名称为类的名称,参数为该类的 __init__()的参数。

还可以使用下列函数来访问属性:

  • getattr(obj,name[,default]) 访问对象的属性
  • hasattr(obj,name) 检查是否存在一个属性
  • setattr(obj,name,value) 设置一个改改。如果不存在,则创建之
  • delattr(obj,name) 删除一个属性

3 内置类属性

  • __doc__: 类的注释
  • __dict__: 类的属性(包括一个字典,由类的数据属性组成)
  • __name__: 类的名称
  • __module__: 类定义所在的模块
  • __bases__: 类的所有父类构成的元素

4 对象销毁

python 内部使用引用计数来跟踪和回收垃圾。当对象被创建时,就创建了一个引用计数,当这个对象的引用计数为0时,对象不再被需要,它会有合适的时候被垃圾回收器回收。

垃圾回收机制不仅针对引用数据为 0 的对象,也可以处理循环引用的情况。 循环引用 是指两个对象相互引用,但是没有其它的变量引用他们。在这种情况下,引入数据可能一直不为0。作为引用计数的补充,垃圾收集器会留心被分配的总量很大的对象,在这种情况下,解释器会停下来,试图清理所有的未引用的循环。

5 类的继承

在 python 中,继承有一些特点:

  • 在继承中类型的构造函数不会被自动调用,它需要在其派生类的构造函数中亲自调用
  • 在调用基类方法时,需要加上基类的类名前缀,且需要带上self参数变量。
  • python 调用方法时总是先在该类中查找,找不到对应的方法才开始到基类中查找

可以使用issubclass() 或者 isinstance() 方法来检测类的继承关系:

  • issubclass(sub,sup) 判断一个类是另一个类的子类或子孙类
  • isinstance(obj,class) 如果obj是类class的实例对句,或是其子类的实例对象,则返回true

6 运算符重载

python 支持运算符重载

以上代码的招待结果为:

7 类属性与方法

  • 类的私有属性 __private_attrs: 两个下划线开头,声明为局长属性为私有,不能在类的外部访问。在类的内部使用时,写作: self.__private_attrs . 但是 python 可以使用 obj._className__attrName 来访问私有变量
  • 类的方法 使用 def 定义。其第一个参数必须是该类的实例对象,一般写作self
  • 类的私有方法 __private_method: 两个下划线开头,声明该方法为私有方法,不可以在类的外部调用。
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.