第六章 与对象的深入交往

6.1一切皆对象

6.2属性管理

6.3我是风儿,我是沙

6.4内存管理



6.11运算符

两个对象能否可以运算,关键是看相应的对象是否有运算方法。(可以用dir()来调查对象的属性)

若对象没有定义到运算方法,可用创建一个子类,如:通过_sub_()方法来添加减法方法操作的定义

6.12元素引用

_getitem_(self,key):返回键对应的值。

_setitem_(self,key,value):设置给定键的值

_delitem_(self,key):删除给定键对应的元素。

_len_():返回元素的数量

6.13内置函数的实现

len()---  _len_()

int()--- _int_()   用于将一个字符串或数字转换为整型。

abs()-- _abs_() 返回数字的绝对值。

6.21属性的背后

对象的属性是分层对应的,某个属性可能在不同层被重复定义。

一是优先原则,二是子类的属性比父类的同名属性有优先权。

如果是进行赋值,Python不会分层深入查找。只会搜索对象本身的_dict_()

如果用self引用对象,则也会遵守相同的规则

6.22特性

描述

property() 函数的作用是在新式类中返回属性值。

语法

以下是 property() 方法的语法:

class property([fget[, fset[, fdel[, doc]]]])

参数

fget -- 获取属性值的函数

fset -- 设置属性值的函数

fdel -- 删除属性值函数

doc -- 属性描述信息

6.23_getattr_方法

描述

getattr() 函数用于返回一个对象属性值。

语法

getattr(object, name[, default])

参数

object -- 对象。

name -- 字符串,对象属性。

default -- 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。

代码:第六章 - 代码片段 - 码云 Gitee.com

6.31动态类型

定义在赋值时,变量可以重新赋值为其他任意值。对象名是指向这一对象的引用。每次赋值时, 我们让左侧的引用指向右侧的对象。

通过内置函数id(),我们能查看到引用指向的是哪个对象。这个函数能返回对象的编号。

a=1

print(id(1))

print(id(a))

还可以用is运算来判断两个引用是否指向同一个对象。

a=3

b=3

print(a is b)


6.32 可变与不可变对象

可变对象:在操作列表时,如果通过元素引用改变了某个元素,那么对象自身会发生改变。

不可变对象:赋值最多只能改变引用的指向,不能改变整型、浮点型、字符串型和元组等对象。


6.33 从动态类型看函数的参数传递

若传递的是不可变对象,则参数不影响外部变量。

若传递的是可变对象,会影响到其他的引用。


6.41 引用管理

引用计数:一个对象可以有多个引用,而每个对象中都存在指向该对象的引用总数。

6.42对象引用对象

globals() 函数会以字典类型返回当前位置的全部全局变量。

del:删除某个引用或容器中的元素。


6.43 垃圾回收

定义:

原理上,当Python的某个对象的引用计数降为0,即没有任何引用指向该对象时,该对象就成为要被回收的垃圾了。

条件:当Python运行时,会记录其中分配对象(Object Allocation)和取消分配对象 (Object Deallocation)的次数。当两者的差值高于某个阈值时,垃圾回收才会启动。

分代:

定义:Python将所有的对象分为0、1、2三代。所有的新建对象都是0代对象。当某一 代对象经历过垃圾回收,依然存活,那么它就被归入下一代对象。垃圾回收启动 时,一定会扫描所有的0代对象。如果0代经过一定次数垃圾回收,那么就启动对0代 和1代的扫描清理。当1代也经历了一定次数的垃圾回收后,就会启动对0、1、2代的扫描,即对所有对象进行扫描。

6.44 孤立的引用环

创建两个表对象,并引用对方,构成一个引用环。

回收:Python会遍历所有的对象i。对于每个对象i所引用的对象j,将对象j的gc_ref_ij减1。

在结束遍历后,gc-ref_j不为0的对象,和这些对象引用的对象,以及继续更下游引用的对象,需要被保留,而其他对象则被垃圾回收。

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

推荐阅读更多精彩内容