国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Python面向對象編程-初級篇

開發 前端
對象是面向對象編程的核心,在使用對象過程中,為了將具有共同特征和行為的一組對象抽象定義,形成類。

前言

面向對象 : 采用基于對象(實體) 的概念建立模型,模擬客觀世界分析、設計、實現軟件的辦法。面向對象編程(Object-oriented Programming,簡稱 OOP)是一種解決軟件復用的設計和編程方法,把軟件系統中相近相似的操作邏輯和操作應用數據、狀態,以類的形式描述出來,以對象實例的形式在軟件系統中復用,提高軟件開發效率。

面向對象編程是Python中一個極為重要的概念。

一、面向對象和面向過程

1.兩類軟件開發設計方法

  1. 面向過程編程:根據業務邏輯從上往下,將需要用到的功能代碼封裝到函數中,著重關注開發的步驟和過程,典型代碼為C語言(關注過程)
  2. 面向對象編程:將函數或所需要的功能進行分類和封裝,著重關注具體哪個類和函數來實現功能,典型代碼為Java、C++等語言(關注結果)

2.面向對象相關術語

  • 類(Class):用來描述具有相同屬性和方法的對象的集合,它定義了該集合中每個對象所共有的屬性和方法,對象是類的實例。
  • 實例:也稱對象。通過類定義的初始化方法,賦予具體的值,成為一個”有血有肉的實體”。
  • 類變量:類變量在整個實例化的對象中是公用的。類變量定義在類中且在函數體之外。類變量通常不作為實例變量使用。
  • 數據成員:類變量或者實例變量, 用于處理類及其實例對象的相關的數據。
  • 方法重寫:如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的覆蓋(override),也稱為方法的重寫。
  • 局部變量:定義在方法中的變量,只作用于當前實例的類。
  • 實例變量:在類的聲明中,屬性是用變量來表示的。這種變量就稱為實例變量,是在類聲明的內部但是在類的其他成員方法之外聲明的。
  • 方法:類中定義的函數。
  • 方法重寫:如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的覆蓋(override),也稱為方法的重 寫。
  • 靜態方法:不需要實例化就可以由類執行的方法。
  • 類方法:類方法是將類本身作為對象進行操作的方法。

面向對象三大特性:

  • 封裝:將內部實現包裹起來,對外透明,提供api接口進行調用的機制。
  • 繼承:即一個派生類(derived class)繼承父類(base class)的變量和方法。
  • 多態:根據對象類型的不同以不同的方式進行處理。

二、類和對象

1.對象

對象是面向對象編程的核心,在使用對象過程中,為了將具有共同特征和行為的一組對象抽象定義,形成類

2.類

1)概念

類是一類事物,對象即是這一類事物的具體實現,類具有相同的屬性和行為

2)類(class)的組成

  • 類名:類的名稱
  • 屬性:事物的特征
  • 方法:具體做什么

3)抽象

擁有相同或類似屬性和行為的對象都可以抽象成一個類

4)類的分類

創建類使用class關鍵字,帶上類名,再帶上括號,括號內為object,這樣的類稱為:新式類;也可以不帶括號和括號內的object,這樣的類稱為:經典類。

# 新式類 
class Meeting2(object):
pass
# 經典類
class Meeting2:
pass

5)創建對象

A = Meeting1() 
B

6)self

類方法的第一個參數必須是self(按慣例是self,也可以是其他名稱),調用時不必傳入。self代表類的實例

三、獲取或添加對象屬性

如下有個名為meeting的類,類中初始化了name、age、sex、address、attack等屬性,定義了introduction和attacked兩個方法:

class Meeting(object):
"""meeting類的類描述"""

def __init__(self, name, age, sex, address, attack):
"""構造函數"""
self.name = name
self.age = int(age)
self.sex = sex
self.address = address
self.attack = int(attack)

def introduction(self):
print("姓名:{}".format(self.name))
print("年齡:{}".format(self.age))
print("性別:{}".format(self.sex))
print("地址:{}".format(self.address))

def attacked(self):
print(f"{self.name}正在向您發起攻擊,攻擊力為{self.attack}!")

def foreign_fun():
print("我是外部函數")

1.hasattr-檢查對象是否包含指定屬性或方法

用法:

hasattr(object,name)

作用:檢查對象中是否包含指定屬性或方法

返回值:存在返回true、不存在返回false

# 實例化meeting類
Meeting = Meeting("張三", 20, "男", "南京", 108)

# 獲取Meeting對象中是否存在name屬性
print(hasattr(Meeting, "name")) # True
# 獲取Meeting對象中是否存在mobile屬性
print(hasattr(Meeting, "mobile")) # False
# 獲取Meeting對象中是否存在attacked方法
print(hasattr(Meeting, "attacked")) # True

2.getattr-獲取對象中指定屬性的屬性值

用法:

getattr(object,name[,default])

作用:獲取對象中指定屬性的屬性值

返回值:若存在,則返回該屬性的屬性值;若不存在,則返回指定內容

# 實例化meeting類
Meeting = Meeting("張三", 20, "男", "南京", 108)

# 獲取Meeting對象中name屬性的屬性值
print(getattr(Meeting, "name")) # 張三
# 獲取Meeting對象中kills屬性或方法的值,若不存在則返回指定內容
print(getattr(Meeting, "kills", "未找到kills方法或屬性")) # 未找到kills方法或屬性
# 獲取Meeting對象中attacked方法,返回值為函數地址
print(getattr(Meeting, "attacked"))
# 使用getattr方法可以直接調用Meeting對象中的方法
f = getattr(Meeting, "attacked")
f()

打印結果如下:

3.setattr-為object對象的name屬性設置指定value

用法:

setattr(object,name,value)

作用:為object對象的指定屬性設置指定value

返回值:

# 實例化meeting類
Meeting = Meeting("張三", 20, "男", "南京", 108)

# 將對象中name屬性的值改為“劉德華”
setattr(Meeting, "name", "劉德華")
# 獲取對象中name的屬性值
print(getattr(Meeting, "name")) # 劉德華
# 將對象外部的名為foreign_fun的方法引入對象內部,并重新命名為“new_foreign_fun”
setattr(Meeting, "new_foreign_fun", foreign_fun)
# 獲取對象中是否存在foreign_fun的屬性或方法,返回值為True或False
print(hasattr(Meeting, "foreign_fun")) # False
# 獲取對象中是否存在new_foreign_fun的屬性或方法,返回值為True或False
print(hasattr(Meeting, "new_foreign_fun")) # True

打印結果如下:

四、魔法方法

1.__init__() 構造函數

__init__()方法是Python中一種特殊的方法,被稱為構造函數或初始化方法,當創建這個類的實例時就會調用該方法。

class Meeting(object):
"""meeting類的類描述"""

def __init__(self, name, age, sex, address, attack):
"""構造函數"""
self.name = name
self.age = int(age)
self.sex = sex
self.address = address
self.attack = int(attack)

C = Meeting("張三", 20, "男", "南京", 108)
print(C.name) # 張三
print(C.address) # 南京

2.__del__() 析構函數

當刪除對象時,Python解釋器會默認調用一個方法__del__(),相當于unittest框架中的tearDown()函數

def __del__(self): 
"""析構函數"""
print("%s攻擊結束" % (self.name))

每調用一次對象,都會執行一次__del__()方法

3.引用計數

D = Meeting("張三", 20, "男", "南京", 108)
# 計算當前實例引用計數,D引用一次,sys.getrefcount(D)引用一次
print(sys.getrefcount(D)) # 2

D對象的引用計數為2次,一次是D引用,一次是sys.getrefcount所引用的

4.__str()__字符串函數

__str__方法需要返回一個字符串,當做這個對象的描述信息,當使用print輸出對象的時候,只要定義了__str__(self)方法,那么就會打印這個方法返回的數據

def __str__(self):
"""字符串函數"""
return "我是Meeting類的字符串描述"
# __str__():字符串函數,定義__str__()方法時,打印對象,打印的是__str__()方法的返回值,否則打印類的內存地址
print(D) # 我是Meeting類的字符串描述
  • 未定義__str__()方法時,打印對象,打印的是Meeting類的內存地址:<__main__.Meeting object at0x014A7748>
  • 定義了__str__()方法后,打印對象,打印的是__str__()方法的返回值:我是Meeting類的字符串描述

五、Python的內置屬性

1.__dict__:獲取類的屬性

獲取類的屬性,包含一個字典,由類的數據屬性組成

# __dict__:獲取類的屬性,返回值為字典類型 
print(D.__dict__)
# {'name': '張三', 'age': 20, 'sex': '男', 'address': '南京', 'attack': 108}

2.__doc__:獲取類的文檔字符串

class Meeting(object): 
"""meeting1類的類描述"""

# __doc__:獲取類的文檔字符串
print(D.__doc__) # meeting1類的類描述

3.__name__:獲取類名

# __name__:獲取類名 
print(Meeting.__name__) # Meeting

4.__module__:類定義所在的模塊

類的全名是'__main__.clssName',如果類位于一個導入模塊mymod中,那么className.__module__等于mymod

from common.http_requests import HttpRequests
# __module__:類定義所在的模塊
print(Meeting.__module__) # __main__
print(HttpRequests.__module__) # common.http_requests

Meeting類的路徑為__main__,而從common文件的http_requests文件中導入了HttpRequests類,打印其路徑,則為common.http_requests

5.__bases__:獲取類的所有父類構成元素

獲取類的所有父類構成元素(包含了一個由所有父類元素組成的元組)。例如下面有一個Song類,其繼承了父類Music,則獲取到的Song類的所有父類構成元素為:(<class '__main__.Music'>,)

class Music(object):
pass

class Song(Music):
pass

print(Song.__bases__) # (<class '__main__.Music'>,)

小結

本篇文章我們介紹了面向對象的相關概念,下面來簡單總結一下:

面向對象相關概念:

  • 類和對象:類是一類事物,對象即是這一類事物的具體實現,類具有相同的屬性和行為;
  • 類的組成:類名、屬性、方法
  • 帶object的為新式類,不帶object的為經典類

獲取或添加對象屬性:

  • hasattr:檢查對象是否包含指定屬性或方法
  • getattr:獲取對象中指定屬性的屬性值
  • setattr:為object對象的name屬性設置指定value

魔法方法:

  • __init__() 構造函數:又叫初始化方法,用來初始化一些成員變量
  • __del__() 析構函數:每調用一次對象,都會執行一次__del__()方法,相當于Unittest框架中的tearDown
  • __str()__字符串函數:返回一個字符串,當做這個對象的描述信息

Python內置屬性:

  • __dict__:獲取類的屬性,返回值為字典類型
  • __doc__:獲取類的文檔字符串
  • __name__:獲取類名
  • __module__:類定義所在的模塊
  • __bases__:獲取類的所有父類構成元素,返回類型為元組
責任編輯:武曉燕 來源: 今日頭條
相關推薦

2023-12-11 15:32:30

面向對象編程OOPpython

2019-03-26 10:50:22

Python面向對象編程語言

2010-03-10 13:25:07

Python面向對象

2017-04-21 09:07:39

JavaScript對象編程

2012-01-17 09:34:52

JavaScript

2023-09-27 23:28:28

Python編程

2010-11-17 11:31:22

Scala基礎面向對象Scala

2023-04-26 00:15:32

python面向對象java

2022-07-30 23:41:53

面向過程面向對象面向協議編程

2012-12-13 11:01:42

IBMdW

2012-02-27 09:30:22

JavaScript

2010-02-26 14:40:15

Python應用程序

2011-05-25 10:21:44

Javascript

2011-06-28 11:06:16

Scala

2010-07-16 17:23:57

Perl面向對象編程

2010-07-13 17:18:29

Perl面向對象編程

2012-12-18 09:24:47

2010-07-13 13:06:41

Perl面向對象

2013-06-07 10:55:10

2011-05-25 10:59:26

Javascript繼承
點贊
收藏

51CTO技術棧公眾號

日本福利在线| 久久免费视频一区| 成人性生交大片免费看视频直播| 成人全视频免费观看在线看| 亚洲精品一区二区网址| 成人涩涩免费视频| 久久爱.com| 亚洲自拍欧美精品| 日韩子在线观看| 欧美激情精品久久久久久久变态| 美女一区二区在线观看| 欧美激情网友自拍| 欧美69wwwcom| 欧美在线不卡一区| 国产三级av在线| 日韩精品成人在线观看| 麻豆精品一区二区av白丝在线| 成人直播大秀| 成人资源在线播放| 激情欧美一区二区| 精品国产乱码久久久久久牛牛| 免费黄网站在线| 国产欧美日韩一区二区三区| 高清av一区二区三区| 日韩精品www| 免费观看亚洲视频大全| 中文字幕精品www乱入免费视频| h精品动漫在线观看| 欧美国产亚洲视频| 看黄在线观看| 亚洲第一免费播放区| 中国一级特黄毛片大片| 久久女同精品一区二区| 成年人在线看片| 精品美女在线播放| 99免费看香蕉视频| 在线亚洲成人| 国产精品三级在线| 亚洲国产精品日韩专区av有中文 | 亚洲a一区二区| 欧美福利网站| 欧美色综合网站| 日本一区福利在线| 日韩精品久久| 久久精品国产一区二区三区日韩| 精品一区免费av| 污污动漫在线观看| 欧美日韩黄视频| 精品美女一区| 成人免费观看a| 国产丶欧美丶日本不卡视频| 国语对白在线视频| 日韩欧美在线视频| 欧美aaa视频| 国产精自产拍久久久久久蜜| 蜜臀久久99精品久久久久宅男| 中文字幕在线成人| 成人影视亚洲图片在线| 久久综合九色综合久99| 久久影视一区二区| 91xxx在线观看| 高清视频欧美一级| 日韩精品欧美精品| 毛片一级免费一级| 亚洲网站在线观看| 亚洲成人av| 亚洲熟妇av日韩熟妇在线| 色狠狠综合天天综合综合| 播放一区二区| 国产一区二区中文字幕免费看| 国产欧美精品一区aⅴ影院| 在线观看av免费| 国产精品老牛影院在线观看| 懂色av中文字幕一区二区三区| 国产精品成人久久久久| 欧美va亚洲va香蕉在线| 国产精品久久久久久久久久辛辛| 成人自拍网站| 国产精品高潮呻吟久久| 国产美女精品写真福利视频| 国产精品a久久久久| 天天色天天爱天天射综合| 亚洲伦乱视频| 精品国产一区二区三区日日嗨| 中文字幕在线免费观看视频| 二区三区在线播放| 在线播放91灌醉迷j高跟美女| 久久午夜影院| 久久这里只有精品18| 色欧美乱欧美15图片| av男人一区| www插插插无码免费视频网站| 欧美三级三级三级爽爽爽| 伊人成综合网yiren22| 日韩av一二三四区| 精品欧美乱码久久久久久1区2区| 亚洲a在线视频| 男女午夜网站| 久热99视频在线观看| 国产在线精品一区在线观看麻豆| www.成人.com| 91免费看片在线| 亚洲猫色日本管| 国产欧美啪啪| 精品视频无码一区二区三区| 亚洲新声在线观看| 狠狠色丁香婷婷综合| 午夜老司机在线观看| 亚洲精品日韩av| 亚洲国产精品自拍| 偷拍一区二区| 黄页免费观看| 国模吧一区二区| 欧美激情一区二区三区全黄| 视频精品国内| 天堂一区在线观看| 久久乐国产精品| 国产精品伦一区| 国产福利一区二区精品秒拍| 爱情岛论坛亚洲首页入口章节| 欧美精品日韩www.p站| 久久久久成人黄色影片| 国产一区二区三区亚洲综合| 欧美性大战久久久久xxx| 久久精品视频在线观看| 久久无码av三级| 精品一区二区三区中文字幕在线 | 久久影院一区| 黄色三级在线观看| 奇门遁甲1982国语版免费观看高清 | 中文字幕9999| 99r国产精品| 自拍偷拍亚洲| 好男人www社区| 青青久久aⅴ北条麻妃| 亚洲午夜久久久久久久久电影院| 欧美色网址大全| 国产三级视频在线看| 久久99久久99精品蜜柚传媒| 精品国产亚洲在线| 黄色片久久久久| 国产精品麻豆| 99视频在线视频| 国产精品pans私拍| 91成人在线观看喷潮| 免费视频久久| 亚洲精品**中文毛片| 国产精品第12页| 国产精品第七影院| 欧美系列在线观看| 国产美女在线精品| 国产精品毛片久久久| 曰本人一级毛片免费完整视频| 91在线观看网站| 日韩av在线网址| 亚洲国产成人午夜在线一区| 99久久亚洲精品蜜臀| 天堂av最新在线| 国产在线观看福利| 成人激情av在线| 精品剧情在线观看| 337p粉嫩大胆色噜噜噜噜亚洲| 神马久久一区二区三区| 在线观看黄av| 伊人久久青草| 欧洲午夜精品久久久| 在线不卡中文字幕播放| av激情亚洲男人天堂| 色中色综合网| f2c人成在线观看免费视频| 国产免费成人在线| 亚洲直播在线一区| 色偷偷亚洲男人天堂| 欧美日韩激情视频8区| 国产美女主播视频一区| 精品在线播放| 高清在线视频不卡| 美乳中文字幕| 日韩中文在线字幕| 国产精品久久视频| 亚洲三级av在线| 欧美午夜激情小视频| 成人av资源站| 国模一区二区三区| 成人乱码手机视频| 在线免费看黄| 日本成人免费网站| 午夜精品电影在线观看| 国产精品第一区| 一本色道久久88亚洲综合88| 精品久久久国产| 91色porny在线视频| 国产精品色网| 免费欧美激情| 国产自产自拍视频在线观看| 在线国产网址| 15—17女人毛片| 国产精品无码电影在线观看| 国模一区二区三区私拍视频| 97视频国产在线|