01 Python面向对象之基础篇

1. 面向对象的两个特点

1.1. class 类

​ class类, 就是对一类拥有相同属性的对象的抽象、蓝图、原型的集合

​ 在类中定义了这些对象的都具备的属性(variables(data))、共同的方法

1.2. Object 对象

​ Object对象即是一个列经过实例化后产生的一个实例, 一个类在没有实例化之前是无法被使用的

2. 面向对象的三大特性

2.1. 封装 ( Encapsulation )

​ 一个类, 在创建之后, 内部的方法是无法进行直接调用的, 是因为类的封装特性. 类将多个函数或其他进行封装, 外部是无法直接对其进行查看的, 只能通过实例化后才能进行调用

2.2. 继承 ( Inheritance )

​ 一个类可以派生出子类,在这个父类里定义的属性、方法自动被子类继承. 子类可以使用父类的方法

2.3. 多态 ( Polymorphism )

​ 多态是面向对象的重要特性,简单点说:“一个接口,多种实现”,指一个基类中派生出了不同的子类,且每个子类在继承了同样的方法名的同时又对父类的方法做了不同的实现,这就是同一种事物表现出的多种形态,

3. 实例化

3.1. 什么是实例化

1)把一个类变成一个具体对象的过程叫做 实例化 ( 初始化 )
2)如果没有实例化, 使用完之后就会被程序释放掉, 实例化后则不会被释放

3.2. 实例化做了什么

1)类在没有实例化调用时, 就已经被读到内存中了, 但是不会对类进行语法判断
2)实例化过程中就是会将实例化后的变量名传入到类中 (self 就会为了接收实例化后的变量名的)
3)在类中自己创建的函数是不会重新复制的, 只有在引用时才会到没有实例化的类中调取该函数
4)调取函数是, 会将 self 替换为 实例化时的变量名

3.3. 如何实例化

1)由图中所示, 类的实例化就是将一个类做一个指针, 指向一个变量,这个过程就是实例化, a 就叫做 Dog 类的实例

4. 类

4.1. 类介绍

其中:
    n = "Alex"      # 叫类变量
    self.name = name    # 叫做实例变量
    bulk,samoye  这里两个函数, 在类中叫做这个类的方法(功能,动态属性)


1) 其中实例变量,在不同的实例化中是无法共享的,但是类变量可以。
2) 所以可以说实例变量的作用域就是实例本身
3) 实例变量又叫做静态属性
4) 所以 静态属性就是变量, 动态属性就是方法
5) 如果在类中有两个变量名相同,一个是类变量, 一个是实例变量, 那在调用时是先找实例变量, 如   果   实例变量中没有才会找类变量
6)实例变量的作用: 用于描述每个实例特定的属性的
7)类变量的作用: 用于提供所有实例的公用的属性
8)类变量与实例变量不同,不是每次实例化都要进行读取与重新赋值的,所以对于全部相同的数属性就可以使用类变量

4.2 对已经实例化的值进行增删改

所以我们是做的是:
    1)在实例化后修改实例化是的值的
    2)可以在实例化后 添加一个新值
    3)添加值是对 a 实例的操作,对其他的实例没影响
    4)也可以删除已经定义好的变量
    (使用 del , 如 del a.name)

4.3. 更改类变量

1)由图中可以看到, a.n 改变了,其实 这个操作就是, 在 a实例中加入了一个 n="1_Alex" 的方法,通过这个来实现更改的效果,所以对 b 实例没有影响

2)响之所以能实现, 是因为解释器在读取白能量是是从内到为进行读取的, 也就是从今到远进行读取变量的, 如果在类中和全局变量中都有N这个属性的话就默认调用类中的不读取全局的, 这就是 及近原则

4.4. 直接修改 原类属性,看 a、b的变化

1)我对类本身进行操作,如图中的 Dog.n = "ABC" , 那么, 这种情况下, b 会修改, 而a 不会, 因为 a的变量中就已经有了n 不会去类中找

2)所以只要实例变量中没有 n 的就会去类中找 n 值, n 值就会发生改变

4.5. 如果 n 是一个不会自动复制的元素哪, 如列表、元祖等

01_6.png
1)我们从右图中发现 Dog.n  发生了改变,这是因为列表, 字段, 元祖,等属性属于不会自动进行复制的元素

2)实例化后实例内部的 n  是不会自己生产, 而是指向了 Dog.n 的内存地址, 随意在右图中,b.n 与 Dog.n 实际上是一个内存地址,所以源 Dog 才会发生改变

5. 类的特殊方法

5.1. 构造函数:(init

​ 作用是在实例化时 , 做一些类的初始化工作, 如赋予实例变量, 实例在实例化时就开始执行某些函数

5.2. 析构函数(del

01_8.png
1)是在实例释放、销毁的时候自动执行的,通常用于一些收尾工作,如关闭一些 数据库链接、打开的临时文件(如右图)。 

2)结束实例可以使用 del 方法,但是要保证只有一个变量指向了这个实例, 否则实例无法释放。 所以 del 方法删除的是变量名而不是数据。只要数据没有了变量名就会被python 当做垃圾收回
  • 5.3. 私有属性,私有方法(体现了类的封装)

01_9.png
1)私有属性:只有类的内部才能被调用的属性叫做私有属性(属性就是变量)

2)私有方法: 只有内部才能调用的方法叫做私有方法(方法就是类内部的函数)

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