《Python》第4章 朝思暮想是對(duì)象

?本章是面對(duì)對(duì)象的編程范式。


1、輕松看對(duì)象

“模擬”正是面向?qū)ο缶幊痰暮诵摹?/p>

對(duì)象提高了程序的可復(fù)用性,加強(qiáng)了程序模擬真實(shí)世界的能力。

????1)類

類需要定義,隸屬類的有其屬性方法屬性

class Bird(object):????????????????????# class來定義名字為Bird的類,object為最基礎(chǔ)的類

????reproduction = 'egg'?????????? ? # 類的屬性

????def chirp (self,sound):? ? ? ? ? # 類的方法屬性(定義函數(shù))

????????????????????????????????????????????????參數(shù)self:是為了在方法內(nèi)部引用對(duì)象自身,調(diào)用時(shí)不需要傳入

????????print(sound)

????2)對(duì)象

通過調(diào)用類,可以創(chuàng)造類下面的一個(gè)對(duì)象并引用屬性

對(duì)象名 = 類名()——可以創(chuàng)造對(duì)象

對(duì)象.屬性——可以引用屬性

對(duì)象.方法屬性()——可以引用方法屬性

除了共性的類屬性外,我們還需要用于說明個(gè)性的對(duì)象屬性

def set_color(self, color):

????self.color = color ????????????????# self參數(shù):操作對(duì)象屬性

_init_()——可以初始化對(duì)象屬性

def _init_(self, color):? ? ? ? ? ? ? ? ? ?#對(duì)象被建立會(huì)自動(dòng)調(diào)用

????self.color = color

self參數(shù)還有其他作用

def chirp(self, sound):

????print(sound)

def chirp_repeat(self, sound, n):

????for i in range(n):

????self.chirp(sound)???????????????? #self參數(shù):方法內(nèi)部調(diào)用同一類的其他方法


2、繼承者們

? ??1)子類

子類可以繼承父類的基本屬性,且有自己的屬性

class Chicken(Bird)? ? ? ? ? ? ?#這里Bird時(shí)父類,Chicken是子類

? ? how_to_move = 'walk'? ? #子類的屬性

? ? 2)屬性覆蓋

在子類的用相同的方法屬性可以覆蓋父類的

super——可以調(diào)用父類被覆蓋的方法屬性


3、那些年,錯(cuò)過的對(duì)象

? ? 1)列表對(duì)象

dir()——查詢一個(gè)類或?qū)ο蟮乃袑傩?/p>

help()——查詢類或函數(shù)的說明文檔

pass——啥都不做,保持程序結(jié)構(gòu)的完整性

列表的方法調(diào)用:

a = [1, 1, 1, 9, True, False]

type(a)? ? ? ? ? ? ? ? ? ? ? ? #查詢a的類別

dir(a)? ? ? ? ? ? ? ? ? ? ? ? ? ?# 查詢一個(gè)類或者對(duì)象的所有屬性

help(a)? ? ? ? ? ? ? ? ? ? ? ? # 查詢函數(shù)或類的說明文檔

a.count(1)? ? ? ? ? ? ? ? ? ?# 計(jì)數(shù)a中元素1的個(gè)數(shù)(其中Ture默認(rèn)值是1,F(xiàn)alse默認(rèn)值是0)

a.index(9)? ? ????????????? ?# 查詢?cè)?第一次出現(xiàn)的下標(biāo)

a.append(6)? ? ? ? ? ? ? ? # 列表最后添加元素6

a.sort()????????????????????????# 排序

a.reverse()? ? ? ? ? ? ? ? ? # 顛倒次序

a.pop()????????????????????????# 去除最后一個(gè)元素,并將該元素返回

a.remove(9)? ? ? ? ? ? ? ? # 去除第一次出現(xiàn)的元素9

a.insert(0, 9)? ? ? ? ? ? ? ?# 從下標(biāo)為0位置插入9

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

? ? 2)元組和字符串對(duì)象

元組只能進(jìn)行查詢操作,字符串是特殊的元組

str = 'a你好鴨A'

sub = '你'

sub2 = ('說', '子')

str.count(sub)????????????# 返回:sub在str中出現(xiàn)的次數(shù)

str.find(sub)? ? ? ? ? ? ? ?# 返回:從左開始 查找sub在str中第一次出現(xiàn)的位置 如果str中不包含sub 返回-1

str.index(sub)????????????# 返回:從左開始 查找sub在str中第一次出現(xiàn)的位置 如果str中不包含sub 舉出錯(cuò)誤

str.rfind(sub)? ? ? ? ? ? ? # 返回:從右開始 查找sub在str中第一次出現(xiàn)的位置 如果str中不包含sub 返回-1

str.rindex(sub)? ? ? ? ? ?# 返回:從右開始 查找sub在str中第一次出現(xiàn)的位置 如果str中不包含sub 舉出錯(cuò)誤

str.isalnum()? ? ? ? ? ? ? # 返回:True 如果所有的字符都是字母或數(shù)字

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

str.isdigit()? ? ? ? ? ? ? ? ?# 返回:True 如果所有的字符都是數(shù)字

str.istitle()? ? ? ? ? ? ? ? ? # 返回:True 如果所有的詞的首字母都是大寫

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

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

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

str.split('好', 1)? ? ? ? ? # 返回:從左開始 以空格為分隔符(separator) 將str分割為多個(gè)子字符串 總共分割max次將所得的子字符串放在一個(gè)表中返回 可以以str.split(",")的方式使用其他分隔符

str.join(sub2)????????????# 返回:將sub2中的元素 以str為分隔符 合并成為一個(gè)字符串

str.strip('a')????????????????# 返回:去掉字符串開頭和結(jié)尾的空格 也可以提供參數(shù)sub 去掉位于字符串開頭和結(jié)尾的sub

str.replace(sub, '2')? ?# 返回:用一個(gè)新的字符串2替換str中的sub

str.capitalize()? ? ? ? ? ?# 返回:將str第一個(gè)字母大寫

str.lower()? ? ? ? ? ? ? ? ?# 返回:將str全部字母改為小寫

str.upper()????????????????# 返回:將str全部字母改為大寫

str.swapcase()? ? ? ? ?# 返回:將str大寫字母改為小寫 小寫字母改為大寫

str.title()????????????????????# 返回:將str的每個(gè)詞(以空格分隔)的首字母大寫

str.center(10)????????????# 返回:長(zhǎng)度為10的字符串 將原字符串放入該字符串中心 其他空余位置為空格

str.ljust(10)????????????????# 返回:長(zhǎng)度為10的字符串 將原字符串左對(duì)齊放入該字符串 其他空余位置為空格

str.rjust(10)????????????????# 返回:長(zhǎng)度為10的字符串 將原字符串右對(duì)齊放入該字符串 其他空余位置為空格

? ? 3)詞典對(duì)象

詞典同樣是一個(gè)類

example_dict = {'a':1,'b':2}

for k in example_dict.keys():????????#循環(huán)遍歷每個(gè)元素的鍵

for v in example_dict.values():? ? ?#循環(huán)遍歷每個(gè)元素的值

for k,v in example_dict.items():????#循環(huán)遍歷每個(gè)元素

example_dict.clear()? ? ? ? ? ? ? ? ? ? ?#清空字典內(nèi)元素


4、意想不到的對(duì)象

? ? 1)循環(huán)對(duì)象

循環(huán)對(duì)象把要使用的元素在循環(huán)過程中逐漸生產(chǎn),節(jié)省空間提高效率

iter()——將一個(gè)列表轉(zhuǎn)變?yōu)檠h(huán)對(duì)象

__next__()——返回列表的值

for結(jié)構(gòu)——自動(dòng)調(diào)用__next__()

生成器可以自定義循環(huán)對(duì)象,方法類似定義函數(shù),但需要把return改為yield

yield——暫停運(yùn)行,返回后面的值,繼續(xù)運(yùn)行

? ? 2)函數(shù)對(duì)象

__call__()——其對(duì)象都被當(dāng)作函數(shù)

? ? 3)模塊對(duì)象

import引入模塊,實(shí)際上就是引入模塊對(duì)象的屬性:

import 模塊——模塊可以是自帶模塊或同文件下的模塊

import 模塊包.模塊——需要在模塊包防止__init__.py文件

from 模塊 in 屬性/模塊*——引入模塊某個(gè)屬性或模塊全部屬性

模塊.屬性()——利用對(duì)象屬性的方法調(diào)用

import 模塊 as 名字——模塊可以改名

模塊對(duì)象.__name__——主程序的文件所對(duì)應(yīng)的模塊對(duì)象的模塊名字為__main__


4、異常對(duì)象

異常也是一種對(duì)象

except 異常A as B——用B代表捕獲到的類型對(duì)象異常A

raise 異常A()——異常A實(shí)際上是異常對(duì)象的類,所以舉出異常會(huì)創(chuàng)建異常對(duì)象

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 4.1 輕松看對(duì)象 除了面向過程的編程范式,Python還支持面向?qū)ο蟮木幊谭妒健?2.類 把相近的東西歸為一類,...
    XavieR_ZzQ閱讀 380評(píng)論 0 0
  • 4.1 輕松看對(duì)象 4.1.1 面向?qū)ο笳Z(yǔ)言的來歷 Simula語(yǔ)言 C++語(yǔ)言 Java語(yǔ)言 C#語(yǔ)言 Obje...
    SibyLtuI閱讀 414評(píng)論 0 0
  • 目錄 4.1輕松看對(duì)象 4.2繼承者們 4.3那些年,錯(cuò)過的對(duì)象 4.4意想不到的對(duì)象 4.1 4.12類 cla...
    HXXHXX閱讀 317評(píng)論 0 2
  • 一、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 6,329評(píng)論 0 10
  • ICan梅詩(shī)陽(yáng)媽 2019年精進(jìn)日記-愛成長(zhǎng)第4篇:《源頭》 親愛的大家長(zhǎng)欣媽,親愛的家人們:大家早上好,我是來自...
    謙謙雨露閱讀 554評(píng)論 0 0

友情鏈接更多精彩內(nèi)容