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)的变量,只能是允许这个类本身进行访问。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容

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