最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python 類(lèi)的基礎(chǔ)詳解與應(yīng)用

 更新時(shí)間:2021年11月09日 09:25:17   作者:不俠居  
類(lèi)用于指定對(duì)象的形式,它包含了數(shù)據(jù)表示法和用于處理數(shù)據(jù)的方法。類(lèi)中的數(shù)據(jù)和方法稱(chēng)為類(lèi)的成員。函數(shù)在一個(gè)類(lèi)中被稱(chēng)為類(lèi)的成員

類(lèi)的定義

# class是定義類(lèi)的關(guān)鍵字,ClassName為類(lèi)的名稱(chēng)
class ClassName:
	# 在這里寫(xiě)其他內(nèi)容
	pass

class ClassName(object):
	# 在這里寫(xiě)其他內(nèi)容
	pass

這是一個(gè)最簡(jiǎn)單的類(lèi)定義,在python3后類(lèi)定義一般都會(huì)繼承object類(lèi),不過(guò)不繼承也沒(méi)有多大的問(wèn)題。

類(lèi)對(duì)象

類(lèi)對(duì)象也稱(chēng)實(shí)例

# 這就是創(chuàng)建了一個(gè)類(lèi)對(duì)象(實(shí)例),a是一個(gè)實(shí)例也是一個(gè)對(duì)象
a = ClassName()

變量

類(lèi)內(nèi)部里面有:類(lèi)變量,局部變量,實(shí)例變量

類(lèi)變量

類(lèi)變量:所有類(lèi)的實(shí)例化對(duì)象都同時(shí)共享類(lèi)變量,也就是說(shuō),類(lèi)變量在所有實(shí)例化對(duì)象中是作為公用資源存在的。

class ClassName(object):
	# 定義一個(gè)類(lèi)變量
	name = "Tom"

類(lèi)方法的調(diào)用方式有 2 種,既可以使用類(lèi)名直接調(diào)用,也可以使用類(lèi)的實(shí)例化(對(duì)象)調(diào)用??梢酝ㄟ^(guò)類(lèi)名修改類(lèi)變量的值,并且修改后,會(huì)影響所有的實(shí)例化的對(duì)象。

# 直接通過(guò)類(lèi)名調(diào)用
print(ClassName.name)
# 創(chuàng)建類(lèi)的實(shí)例(對(duì)象)
a = ClassName()
b = ClassName()
// 通過(guò)類(lèi)的實(shí)例調(diào)用
print(a.name)
print(b.name)
ClassName.name = "Tim"
print(a.name)
print(b.name)

運(yùn)行結(jié)果為:

Tom
Tom
Tom
Tim
Tim

但如果實(shí)例的類(lèi)變量的值修改后,在通過(guò)類(lèi)名修改變量的值,不會(huì)影響這個(gè)實(shí)例的類(lèi)變量。

a = ClassName()
b = ClassName()
a.name = "asf"
ClassName.name = "Pig"
print(a.name)
print(b.name)
ClassName.name = "aaa"
print(a.name)
print(b.name)

運(yùn)行結(jié)果:

asf
Pig
asf
aaa

通過(guò)運(yùn)行結(jié)果可知,在對(duì)象a改變name值后,再調(diào)用Class Name.name = "Pig"對(duì)象a的name變量值沒(méi)有改變

局部變量

局部變量:局部變量只定義在類(lèi)方法內(nèi),也只能在方法內(nèi)使用

class ClassName(object):
	# 這是一個(gè)方法
	def function(self):
		# 這是一個(gè)局部變量
		name = "Tom"

name定義在類(lèi)方法內(nèi),所以是局部變量,在外部是無(wú)法調(diào)用,只能在方法內(nèi)使用。

實(shí)例變量

實(shí)例變量:以self.變量名的方式定義的變量,稱(chēng)為實(shí)例變量(屬性)

class ClassName(object):
	# 這是一個(gè)實(shí)例變量
	def function1(self):
		self.name = "Tom"
	def function2(self):
		print(self.name)

只作用于調(diào)用方法的對(duì)象,可以在其他方法內(nèi)調(diào)用。

className = ClassName()
className.function()

運(yùn)行結(jié)果:

Tom

如果定義在__init__()方法中的實(shí)例變量,可以同過(guò)只能通過(guò)對(duì)象名訪(fǎng)問(wèn)。

class ClassName(object):
	def __init__():
		self.name = "Tom"

className = ClassName()
print(className.name)

運(yùn)行結(jié)果:

Tom

私有變量

__name這就是私有變量,在變量前面加兩個(gè)_,self.__name也是私用變量,私有變量在類(lèi)外部無(wú)法直接進(jìn)行訪(fǎng)問(wèn)。

class ClassName(object):
	# 定義了一個(gè)私有類(lèi)變量
	__name = "Tom"
    
ClassName.__name

運(yùn)行結(jié)果:

---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-8-08830fea0534> in <module>
2 __name = "Tom"
3
----> 4 ClassName.__name

AttributeError: type object 'ClassName' has no attribute '__name'
 

類(lèi)的方法

在類(lèi)里面用def關(guān)鍵字來(lái)定義方法,也叫函數(shù)。與普通方法的區(qū)別是,必須需要一個(gè)self的參數(shù),self代表類(lèi)自身

class ClassName(object):
	def function(self,a):
		pass

def為定義函數(shù)的關(guān)鍵字,function為函數(shù)的名稱(chēng),

特殊方法

1.__init__()用來(lái)初始化類(lèi)的參數(shù)一般叫構(gòu)造方法
這個(gè)方法,我們一般類(lèi)都會(huì)用到。

class ClassName(object):
	def __init__(self):
		self.name = "aaa"

當(dāng)類(lèi)實(shí)例化時(shí),會(huì)自動(dòng)調(diào)用__init__

2.__call__()將對(duì)象當(dāng)做函數(shù)時(shí)調(diào)用。

class ClassName(object):
	def __init__(self):
		self.name = "aaa"
	def __call__(self):
		print("aaa")

c = ClassName() // 類(lèi)實(shí)例化,執(zhí)行了__init__()方法
c() //執(zhí)行了__call__()方法

3、__get__()類(lèi)作為另一個(gè)類(lèi)的屬性時(shí)自動(dòng)調(diào)用

class ClassName:
	def __init__(self):
		pass
	def __get__(self,instance, owner):
		print("__get__調(diào)用了")

class ClassName2:
		a = ClassName()

運(yùn)行結(jié)果:

__get__調(diào)用了

4、__new__() 是一種負(fù)責(zé)創(chuàng)建類(lèi)實(shí)例的靜態(tài)方法,且該方法會(huì)優(yōu)先 __init__() 初始化方法被調(diào)用。

。。。還有很多其他的類(lèi)特殊方法

繼承

繼承在生活中是獲得父輩的財(cái)產(chǎn),在編程語(yǔ)言中是獲得父類(lèi)的所有變量,方法。通過(guò)繼承從類(lèi)上衍生出新的類(lèi)

單繼承

簡(jiǎn)而言之,是繼承一個(gè)類(lèi),所繼承的類(lèi)為基類(lèi)(父類(lèi)),繼承者為子類(lèi)

# 父類(lèi)
class A:
	pass

# 子類(lèi),繼承了A類(lèi)
class B(A):
	pass

上面是個(gè)簡(jiǎn)單的繼承,子類(lèi)在類(lèi)名后面的括號(hào)內(nèi)寫(xiě)要繼承的類(lèi)的名稱(chēng)。

# 父類(lèi)
class A:
	name = "Tom"
	def getName(self):
		print("..")

# 子類(lèi),繼承了A類(lèi)
class B(A):
	pass

b = B()
print(b.name)
b.getName()

運(yùn)行結(jié)果:

Tom
..

發(fā)現(xiàn)B類(lèi)沒(méi)有寫(xiě)什么變量和方法,卻調(diào)用了A類(lèi)的變量(屬性)和方法
當(dāng)然如果不想要父類(lèi)的某個(gè)變量或方法,可以重寫(xiě)這個(gè)變量或方法

# 父類(lèi)
class A:
	name = "Tom"
	def getName(self):
		print("..")

# 子類(lèi),繼承了A類(lèi)
class B(A):
	def getName(self):
		print("bbb")

b = B()
print(b.name)
b.getName()

運(yùn)行結(jié)果:

Tom
bbb

多繼承

多繼承從名稱(chēng)上來(lái)看,是繼承了多個(gè)類(lèi)

class A:
	pass

class B:
	pass

class C(A, B):
	pass

上面這個(gè)C類(lèi)同時(shí)繼承了A類(lèi),B類(lèi)

到此這篇關(guān)于python 類(lèi)的基礎(chǔ)詳解與應(yīng)用的文章就介紹到這了,更多相關(guān)python 類(lèi)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python學(xué)習(xí)入門(mén)之區(qū)塊鏈詳解

    Python學(xué)習(xí)入門(mén)之區(qū)塊鏈詳解

    區(qū)塊鏈的基礎(chǔ)概念很簡(jiǎn)單:一個(gè)分布式數(shù)據(jù)庫(kù),存儲(chǔ)一個(gè)不斷加長(zhǎng)的 list,list 中包含著許多有序的記錄。下面這篇文章主要給大家介紹了關(guān)于Python學(xué)習(xí)入門(mén)之區(qū)塊鏈的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面來(lái)一起看看吧。
    2017-07-07
  • 在Django model中設(shè)置多個(gè)字段聯(lián)合唯一約束的實(shí)例

    在Django model中設(shè)置多個(gè)字段聯(lián)合唯一約束的實(shí)例

    今天小編就為大家分享一篇在Django model中設(shè)置多個(gè)字段聯(lián)合唯一約束的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • Windows下的Jupyter Notebook 安裝與自定義啟動(dòng)(圖文詳解)

    Windows下的Jupyter Notebook 安裝與自定義啟動(dòng)(圖文詳解)

    這篇文章主要介紹了Windows下的Jupyter Notebook 安裝與自定義啟動(dòng)(圖文詳解),需要的朋友可以參考下
    2018-02-02
  • 使用OpenCV實(shí)現(xiàn)仿射變換—旋轉(zhuǎn)功能

    使用OpenCV實(shí)現(xiàn)仿射變換—旋轉(zhuǎn)功能

    這篇文章主要介紹了在OpenCV里實(shí)現(xiàn)仿射變換——旋轉(zhuǎn)功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • python3+RobotFramework環(huán)境搭建過(guò)程

    python3+RobotFramework環(huán)境搭建過(guò)程

    之前用的python2.7+robotframework進(jìn)行的自動(dòng)化測(cè)試,python3的還沒(méi)嘗試,今天嘗試了下,搭建環(huán)境的時(shí)候也是各種報(bào)錯(cuò),今天給大家分享下python3+RobotFramework環(huán)境搭建過(guò)程,感興趣的朋友一起看看吧
    2023-08-08
  • Python函數(shù)用法和底層原理分析

    Python函數(shù)用法和底層原理分析

    函數(shù)是可重用的程序代碼塊。函數(shù)的作用,不僅可以實(shí)現(xiàn)代碼的復(fù)用,更能實(shí)現(xiàn)代碼的一致性。一致性指的是,只要修改函數(shù)的代碼,則所有調(diào)用該函數(shù)的地方都能得到體現(xiàn),這篇文章主要介紹了Python函數(shù)用法和底層分析,需要的朋友可以參考下
    2022-12-12
  • 對(duì)python cv2批量灰度圖片并保存的實(shí)例講解

    對(duì)python cv2批量灰度圖片并保存的實(shí)例講解

    今天小編就為大家分享一篇對(duì)python cv2批量灰度圖片并保存的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • 簡(jiǎn)單談?wù)凱ython中的反轉(zhuǎn)字符串問(wèn)題

    簡(jiǎn)單談?wù)凱ython中的反轉(zhuǎn)字符串問(wèn)題

    本文給大家總結(jié)了5種可以實(shí)現(xiàn)python中反轉(zhuǎn)字符串的方法,非常的實(shí)用,有需要的小伙伴可以參考下
    2016-10-10
  • numpy數(shù)組之讀寫(xiě)文件的實(shí)現(xiàn)

    numpy數(shù)組之讀寫(xiě)文件的實(shí)現(xiàn)

    本文主要介紹了numpy數(shù)組之讀寫(xiě)文件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • NumPy中的實(shí)用函數(shù)clip詳解

    NumPy中的實(shí)用函數(shù)clip詳解

    這篇文章主要介紹了NumPy中的實(shí)用函數(shù)clip詳解,NumPy函數(shù)clip()用于保留數(shù)組中在間隔范圍內(nèi)的值,給定一個(gè)范圍,范圍外的值將剪裁到范圍邊界,需要的朋友可以參考下的相關(guān)資料
    2023-08-08

最新評(píng)論

黎平县| 罗山县| 富民县| 南召县| 赤城县| 清镇市| 新竹县| 屏南县| 武穴市| 七台河市| 枣强县| 仲巴县| 无锡市| 田林县| 麻江县| 临桂县| 天峨县| 东安县| 广安市| 高州市| 德阳市| 桂平市| 洞口县| 漳浦县| 松溪县| 军事| 铁岭县| 杭锦后旗| 桑植县| 松原市| 额济纳旗| 和田市| 衡山县| 扎鲁特旗| 永靖县| 犍为县| 阜城县| 桐梓县| 芷江| 凤阳县| 夏邑县|