第四章 朝思暮想是对象

4.1 轻松看对象

除了面向过程的编程范式,Python还支持面向对象的编程范式。

2.类

把相近的东西归为一类,而且给这个类起一个名字。

需要用到:class函数

用法:class 类名(对象类别)

           statement

区分属性:①数据性:e.g. feature=True

                  ②行为:e.g. def (行为名)(self,参数)

                                statement

3.对象

定义:对象是类的实例:summer=Bird()

对属性的引用:对象.属性:summer.chirp("jijiji")

对对象个性的修改:

①通过行为和self:def set_color(self,color)

                                     self.color=color(给定的参数)

②特殊方法:_init_()、_add_().....(在方法名前后加两个下划线)

在引入对象的同时定义参数

self:可以在一个方法内部调用同一类的其他方法

4.2 继承者们

1.子类

①子类:拥有父类的所有属性,同时可定义子类的特有属性,还可替换。

②继承:子类拥有父类的所有属性。

2.属性覆盖

使用同名属性名,父类的属性会被子类覆盖。

super():一个内置类,能产生指代父类的对象。通过super,我们在子类的同名方法中调用了父类的方法。

4.3 那些年,错过的对象

查找类的名字:type()

查询类的属性:dir()、help()

①列表对象:

pass:特殊关键字,用于说明,在该语法结构中“什么都不做”,保持结构完整性

我们看到类还有许多“隐藏技能”。比如下面一些list的方法,可以返回列表的信息:

>>>a = [1, 2, 3, 5, 9.0, "Good", -1, True, False, "Bye"]

>>>a.count(5) # 计数,看总共有多少个元素5

>>>a.index(3) # 查询元素3第一次出现时的下标

>>>a.append(6) # 在列表的最后增添一个新元素6

>>>a.sort() # 排序

>>>a.reverse() # 颠倒次序

>>>a.pop() # 去除最后一个元素,并将该元素返回。

>>>a.remove(2) # 去除第一次出现的元素2

>>>a.insert(0,9) # 在下标为0的位置插入9

>>>a.clear() # 清空列表

②元组与字符串对象

>>>a = (1, 3, 5)

>>>a.count(5) # 计数,看总共有多少个元素5

>>>a.index(3) # 查询元素3第一次出现时的下标

>>>a="abc"

>>>a.index("c")

>>>str = "Hello World!"

>>>sub = "World"

>>>str.count(sub) # 返回:sub在str中出现的次数

>>>str.find(sub) # 返回:从左开始,查找sub在str中第一次出现的位置。 #如果str中不包含sub,返回 -1

>>>str.index(sub) # 返回:从左开始,查找sub在str中第一次出现的位置。 #如果str中不包含sub,举出错误

>>>str.rfind(sub) # 返回:从右开始,查找sub在str中第一次出现的位置 #如果str中不包含sub,返回 -1

>>>str.rindex(sub) # 返回:从右开始,查找sub在str中第一次出现的位置 # 如果str中不包含sub,举出错误

>>>str.isalnum() # 返回:True,如果所有的字符都是字母或数字

>>>str.isalpha() # 返回:True,如果所有的字符都是字母

>>>str.isdigit() # 返回:True,如果所有的字符都是数字

>>>str.istitle() # 返回:True,如果所有的词的首字母都是大写


>>>str.isspace() # 返回:True,如果所有的字符都是空格

>>>str.islower() # 返回:True,如果所有的字符都是小写字母

>>>str.isupper() # 返回:True,如果所有的字符都是大写字母

>>>str.split([sep, [max]]) # 返回:从左开始,以空格为分隔符(separator),# 将str分 割为多个子字符串,总共分割max次。# 将所得的子字符串放在一个表中返回。可以以 # str.split(",")的方式使用其他分隔符

>>>str.rsplit([sep, [max]]) # 返回:从右开始,以空格为分隔符(separator),# 将str分 割为多个子字符串,总共分割max次。# 将所得的子字符串放在一个表中返回。可以以 # str.rsplit(",")的方式使用其他分隔符

 >>>str.join(s) # 返回:将s中的元素,以str为分隔符, # 合并成为一个字符串。

>>>str.strip([sub]) # 返回:去掉字符串开头和结尾的空格。 # 也可以提供参数sub,去掉位于字符串开头和结尾的sub

>>>str.replace(sub, new_sub) # 返回:用一个新的字符串new_sub替换str中 # 的sub

>>>str.capitalize() # 返回:将str第一个字母大写

>>>str.lower() # 返回:将str全部字母改为小写

>>>str.upper() # 返回:将str全部字母改为大写

>>>str.swapcase() # 返回:将str大写字母改为小写,小写字母改为大写

>>>str.title() # 返回:将str的每个词(以空格分隔)的首字母# 大写

>>>str.center(width) # 返回:长度为width的字符串,将原字符串放入# 该字符串中 心,其他空余位置为空格。

>>>str.ljust(width) # 返回:长度为width的字符串,将原字符串左对# 齐放入该字符串,其 他空余位置为空格。

>>>str.rjust(width) # 返回:长度为width的字符串,将原字符串右对齐放入# 该字符串,其 他空余位置为空格。

③词典对象

for k in example_dict.keys():

print(example_dict[k])

for v in example_dict.values():

          print(v)

for k,v in example_dict.items():

          print(k, v)

用clear()方法,清空整个词典:

example_dict.clear() # 清空example_dict,example_dict变为{}

4.4 意想不到的对象

①循环对象:包含有一个_next_()方法,这个方法的目的是生成循环的下一个结果。在生成过循环的所有结果之后,该方法将抛出StopIteration异常。循环接收到这个异常,就会知道循环已经结束,将停止调用__next__()。

手动循环例子:

>>>example_iter = iter([1, 2])

 >>>example_iter.__next__() # 显示1

>>>example_iter.__next__() # 显示2

>>>example_iter.__next__() # 出现StopIteration异常。

我们可以把 循环对象包裹在for中自动进行循环:

for itemin iter([1, 2]):

 print(item)

相对于序列,循环对象的好处在于:不用在循环还没开始的时候,就生成要使用的元素。所有要使用的元素可以在循环过程中逐渐生成。这样,不仅节省了空间,提高了效率,还会使编程更加灵活。

生成器:自定义循环对象。

②函数对象

任何一个有_call_()特殊方法的对象:

class SampleMore(object):

def __call__(self, a):

return a + 5

add_five = SampleMore() # 生成函数对象

print(add_five(2)) #像一个函数一样调用函数对象,结果为7。

③模块对象

Python中的模块对应一个.py文件

语法:import xxx、from xxx import xxx

引入模块的所有属性:from xxx import *

也可以用对象.属性的方式调用。

④异常对象

try等捕捉到的程序中出现的异常。

except… as…:用新的变量代表捕获到的类型对象。

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

推荐阅读更多精彩内容