python面向对象

一、python面向对象简介

简介:Python从设计之初就已经是一门面向对象的语言,在Python中创建一个类和对象是很容易的。

  1. 面向对象技术简介

    • 类(Class):用来描述具有相同的属性和方法的对象集合。它定义了该集合中每一个对象所共有的属性和方法。对象是类的实例,类是对象的抽象。
    • 类变量:类变量在整个实例化的对象是公用的。
    • 数据成员:类变量或者实例变量,用于处理类及实例对象的相关数据。
    • 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个地方叫做方法的覆盖。也称之为方法的重写。
    • 局部变量:定义在方法中的变量,只用于当前实例的类。
    • 实例变量:在类的声明中,属性是用变量来表示的。
    • 继承:即一个派生类(derived class) 继承基类(base class)的字段和方法。
    • 实例化:创建一个类的实例,类的具体对象。
    • 方法:类中定义的函数。
    • 对象:通过类定义的数据结构和实例。
  2. 创建类

    使用class语句创建一个新类,class之后为类名并以冒号结尾。

    class 类名:

    方法

    变量=类名()

  3. self代表类的实例,而非类

    类的方法与普通的函数只有一个特别的区别→它们必须有一个额外的第一个参数名称,按照惯例它的名称是self。

    self代表是类的实例,代表当前对象的地址,而self.class则指向类。

  4. 创建实例对象

    在其他语言中实例化类关键字new,在python中并没有关键字,类的实例化类似函数调用的方式。

  5. 访问属性

    可以使用点号,来访问对象的属性。

    可以作为添加,修改或删除使用

    • getattr(obj,name,default):访问对象的属性
    • hasattr(obj,name):检查是否存在一个属性
    • setattr(obj,name,value):设置一个属性。如果属性不存在,会创建一个新的属性
    • delattr(obj,name):删除属性
  6. Python内置函数

    • dict:类的属性(包含一个字典,由类的数据属性组成)
    • doc:类的文档字符串
    • name:类名
    • module:类定义所在的模块,如果类位于一个导入模块mymod中,那么classNname.module等于mymod。
    • bases:类的所有父类构成元素(包含了一个由所有父类组成的元素)
  7. python对象销毁(垃圾回收)

    python使用了引用计数着一简单技术来跟踪和回收垃圾。

    在python内部记录着所有使用中的对象各有多少个引用。

    一个内部跟踪变量,称为一个引用数据。

    垃圾回收机制不仅针对引用计数为0的对象,同样也可以处理循环引用的情况。

  8. 类的继承

    面向对象的编程带来的最主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。

    通过继承创建的新类称为子类或派生类,被继承的类称为基类、父类或超类。

    继承语法:

    class 派生类名(基类名)

    1. 如果再子类中需要父类的构造方法需要显示的调用父类的构造方法,或者不重写父类的构造方法,
    2. 在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量,
    3. python总是首先查找对应类型的方法,如果它不能派生类中找到对应的方法,它才开始到基类中逐个查找。

    如果在继承元祖中列了一个以上的类,那么它就被称作‘多重继承’。

    • issubclass():布尔函数判断一个类是另一个类的子类或者子孙类
    • isinstance(obj,Class):布尔函数如果obj是Class类的实例对象或者是一个Class子类的实例对象,则返回True
  9. 方法重写

    如果你的父类方法的功能不能满足你的需求,你可以在子类重写你父类的方法。

  10. 基础重载方法

    1. init(self)→构造函数简单的调用方法:obj=className(args)
    2. del(self)→析构方法,删除一个对象,简单的调用方法:del obj
    3. repr(self)→转化为供解释器读取的形式:repr(obj)
    4. str(self)→用于将值转化为适合于人阅读的形式,简单的调用方法:str(obj)
    5. cmp(self,x)→对象比较,简单的调用方法:cmp(obj.x)
  11. 运算符重载

    python支持运算符重载

  12. 类属性与方法

    1. 类的私有属性

      __private_attrs:两个下划线开头,生命该属性私有,不能再类的外部被使用或者直接访问。在类内部的方法中使用self. _private_attrs。

    2. 类的方法

      在类的内部,使用def关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数。

    3. 累的私有方法

      __private_method:两个下划线开头,声明该方法为私有方法,不能在类的外部调用。在类的内部调用self. _ _private_methods。

  13. 单下划线、双下划线、头尾下划线说明

    1. foo:定义的是特殊方法,一般系统定义名字,类似init()之类的。
    2. _foo:以单下划线开头的表示的是protected类型的变量,即保护类型只能允许其本身与子类进行访问。
    3. __foo:双下划线的表示是私有类型(private)的变量,只能是允许这个类本身进行访问。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 面向对象主要包含,类和对象。类就是一类对象抽象出来的,是具有相同属性和行为事物的统称。我们的类主要分为:类名、属...
    rookieyu阅读 3,375评论 0 1
  • Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我...
    筱屈阅读 949评论 0 0
  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 9,673评论 4 16
  • Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我...
    淺色年華_7d4f阅读 3,142评论 0 0
  • Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我...
    你的python助手阅读 942评论 0 0