欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

類的定義

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

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

這是一個(gè)最簡單的類定義,在python3后類定義一般都會繼承object類,不過不繼承也沒有多大的問題。

類對象

類對象也稱實(shí)例

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

變量

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

類變量

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

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

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

# 直接通過類名調(diào)用
print(ClassName.name)
# 創(chuàng)建類的實(shí)例(對象)
a = ClassName()
b = ClassName()
// 通過類的實(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í)例的類變量的值修改后,在通過類名修改變量的值,不會影響這個(gè)實(shí)例的類變量。

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

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

局部變量

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

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

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

實(shí)例變量

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

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

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

className = ClassName()
className.function()

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

Tom

如果定義在__init__()方法中的實(shí)例變量,可以同過只能通過對象名訪問。

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

className = ClassName()
print(className.name)

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

Tom

私有變量

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

class ClassName(object):
	# 定義了一個(gè)私有類變量
	__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'
 

類的方法

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

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

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

特殊方法

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

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

當(dāng)類實(shí)例化時(shí),會自動調(diào)用__init__

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

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

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

3、__get__()類作為另一個(gè)類的屬性時(shí)自動調(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)建類實(shí)例的靜態(tài)方法,且該方法會優(yōu)先 __init__() 初始化方法被調(diào)用。

。。。還有很多其他的類特殊方法

繼承

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

單繼承

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

# 父類
class A:
	pass

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

上面是個(gè)簡單的繼承,子類在類名后面的括號內(nèi)寫要繼承的類的名稱。

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

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

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

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

Tom
..

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

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

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

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

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

Tom
bbb

多繼承

多繼承從名稱上來看,是繼承了多個(gè)類

class A:
	pass

class B:
	pass

class C(A, B):
	pass

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

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

相關(guān)文章

  • Python函數(shù)參數(shù)的4種方式

    Python函數(shù)參數(shù)的4種方式

    本文主要介紹了Python函數(shù)參數(shù)的4種方式,主要包括必選參數(shù),默認(rèn)參數(shù),可選參數(shù),關(guān)鍵字參數(shù),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • 詳解python運(yùn)行三種方式

    詳解python運(yùn)行三種方式

    這篇文章主要介紹了python運(yùn)行三種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 解決Tensorflow2.0 tf.keras.Model.load_weights() 報(bào)錯(cuò)處理問題

    解決Tensorflow2.0 tf.keras.Model.load_weights() 報(bào)錯(cuò)處理問題

    這篇文章主要介紹了解決Tensorflow2.0 tf.keras.Model.load_weights() 報(bào)錯(cuò)處理問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨想過來看看吧
    2020-06-06
  • Django xadmin安裝及使用詳解

    Django xadmin安裝及使用詳解

    這篇文章主要介紹了Django xadmin安裝及使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • 使用Python神器對付12306變態(tài)驗(yàn)證碼

    使用Python神器對付12306變態(tài)驗(yàn)證碼

    這篇文章主要介紹了使用Python神器對付12306變態(tài)驗(yàn)證碼的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • tensorflow實(shí)現(xiàn)簡單的卷積網(wǎng)絡(luò)

    tensorflow實(shí)現(xiàn)簡單的卷積網(wǎng)絡(luò)

    這篇文章主要為大家詳細(xì)介紹了tensorflow實(shí)現(xiàn)簡單的卷積網(wǎng)絡(luò),使用的數(shù)據(jù)集是MNIST,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Python實(shí)現(xiàn)掃描指定目錄下的子目錄及文件的方法

    Python實(shí)現(xiàn)掃描指定目錄下的子目錄及文件的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)掃描指定目錄下的子目錄及文件的方法,需要的朋友可以參考下
    2014-07-07
  • python實(shí)現(xiàn)高斯判別分析算法的例子

    python實(shí)現(xiàn)高斯判別分析算法的例子

    今天小編就為大家分享一篇python實(shí)現(xiàn)高斯判別分析算法的例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 為什么你還不懂得怎么使用Python協(xié)程

    為什么你還不懂得怎么使用Python協(xié)程

    這篇文章主要給大家介紹了關(guān)于為什么你還不懂得怎么使用Python協(xié)程的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • python實(shí)現(xiàn)指定ip端口掃描方式

    python實(shí)現(xiàn)指定ip端口掃描方式

    今天小編就為大家分享一篇python實(shí)現(xiàn)指定ip端口掃描方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12

最新評論