国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python 類的基礎詳解與應用

python 類的基礎詳解與應用

2022-02-26 00:04不俠居 Python

類用于指定對象的形式,它包含了數據表示法和用于處理數據的方法。類中的數據和方法稱為類的成員。函數在一個類中被稱為類的成員

類的定義

?
1
2
3
4
5
6
7
8
# class是定義類的關鍵字,ClassName為類的名稱
class ClassName:
    # 在這里寫其他內容
    pass
 
class ClassName(object):
    # 在這里寫其他內容
    pass

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

類對象

類對象也稱實例

?
1
2
# 這就是創建了一個類對象(實例),a是一個實例也是一個對象
a = ClassName()

變量

類內部里面有:類變量,局部變量,實例變量

類變量

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

?
1
2
3
class ClassName(object):
    # 定義一個類變量
    name = "Tom"

類方法的調用方式有 2 種,既可以使用類名直接調用,也可以使用類的實例化(對象)調用。可以通過類名修改類變量的值,并且修改后,會影響所有的實例化的對象。

?
1
2
3
4
5
6
7
8
9
10
11
# 直接通過類名調用
print(ClassName.name)
# 創建類的實例(對象)
a = ClassName()
b = ClassName()
// 通過類的實例調用
print(a.name)
print(b.name)
ClassName.name = "Tim"
print(a.name)
print(b.name)

運行結果為:

Tom
Tom
Tom
Tim
Tim

但如果實例的類變量的值修改后,在通過類名修改變量的值,不會影響這個實例的類變量。

?
1
2
3
4
5
6
7
8
9
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)

運行結果:

asf
Pig
asf
aaa

通過運行結果可知,在對象a改變name值后,再調用Class Name.name = "Pig"對象a的name變量值沒有改變

局部變量

局部變量:局部變量只定義在類方法內,也只能在方法內使用

?
1
2
3
4
5
class ClassName(object):
    # 這是一個方法
    def function(self):
        # 這是一個局部變量
        name = "Tom"

name定義在類方法內,所以是局部變量,在外部是無法調用,只能在方法內使用。

實例變量

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

?
1
2
3
4
5
6
class ClassName(object):
    # 這是一個實例變量
    def function1(self):
        self.name = "Tom"
    def function2(self):
        print(self.name)

只作用于調用方法的對象,可以在其他方法內調用。

?
1
2
className = ClassName()
className.function()

運行結果:

Tom

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

?
1
2
3
4
5
6
class ClassName(object):
    def __init__():
        self.name = "Tom"
 
className = ClassName()
print(className.name)

運行結果:

Tom

私有變量

__name這就是私有變量,在變量前面加兩個_self.__name也是私用變量,私有變量在類外部無法直接進行訪問。

?
1
2
3
4
5
class ClassName(object):
    # 定義了一個私有類變量
    __name = "Tom"
    
ClassName.__name

運行結果:

---------------------------------------------------------------------------
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關鍵字來定義方法,也叫函數。與普通方法的區別是,必須需要一個self的參數,self代表類自身

?
1
2
3
class ClassName(object):
    def function(self,a):
        pass

def為定義函數的關鍵字,function為函數的名稱,

特殊方法

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

?
1
2
3
class ClassName(object):
    def __init__(self):
        self.name = "aaa"

當類實例化時,會自動調用__init__

2.__call__()將對象當做函數時調用。

?
1
2
3
4
5
6
7
8
class ClassName(object):
    def __init__(self):
        self.name = "aaa"
    def __call__(self):
        print("aaa")
 
c = ClassName() // 類實例化,執行了__init__()方法
c() //執行了__call__()方法

3、__get__()類作為另一個類的屬性時自動調用

?
1
2
3
4
5
6
7
8
class ClassName:
    def __init__(self):
        pass
    def __get__(self,instance, owner):
        print("__get__調用了")
 
class ClassName2:
        a = ClassName()

運行結果:

__get__調用了

4、__new__() 是一種負責創建類實例的靜態方法,且該方法會優先 __init__() 初始化方法被調用。

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

繼承

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

單繼承

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

?
1
2
3
4
5
6
7
# 父類
class A:
    pass
 
# 子類,繼承了A類
class B(A):
    pass

上面是個簡單的繼承,子類在類名后面的括號內寫要繼承的類的名稱。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
# 父類
class A:
    name = "Tom"
    def getName(self):
        print("..")
 
# 子類,繼承了A類
class B(A):
    pass
 
b = B()
print(b.name)
b.getName()

運行結果:

Tom
..

發現B類沒有寫什么變量和方法,卻調用了A類的變量(屬性)和方法
當然如果不想要父類的某個變量或方法,可以重寫這個變量或方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 父類
class A:
    name = "Tom"
    def getName(self):
        print("..")
 
# 子類,繼承了A類
class B(A):
    def getName(self):
        print("bbb")
 
b = B()
print(b.name)
b.getName()

運行結果:

Tom
bbb

多繼承

多繼承從名稱上來看,是繼承了多個類

?
1
2
3
4
5
6
7
8
class A:
    pass
 
class B:
    pass
 
class C(A, B):
    pass

上面這個C類同時繼承了A類,B類

到此這篇關于python 類的基礎詳解與應用的文章就介紹到這了,更多相關python 類內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/m0_46778548/article/details/120977530

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 激情综合五月天 | 国产福利在线 | 国产另类ts人妖一区二区 | 国产91精品一区二区绿帽 | 欧美在线小视频 | 日韩av视屏 | 三级在线观看 | 中文字幕亚洲欧美日韩在线不卡 | 日本va欧美va精品发布 | 久久人人爽人人爽 | 91免费在线视频 | 亚洲成年人影院 | 欧美激情免费 | 亚洲免费在线视频 | 国产精品爱久久久久久久 | 黄色三及毛片 | 日韩av免费在线观看 | 福利片网站 | 中文字幕1区2区3区 亚洲欧美日韩精品久久亚洲区 | 综合色综合 | 欧美日韩精品一区二区三区蜜桃 | 日本一区二区精品 | 免费黄色小视频 | 亚洲一区二区三区免费观看 | 人人射 | 国产精品三级久久久久久电影 | 欧美精品免费在线 | 欧美一二| 久久久久精| 国产精品不卡在线播放 | 日本午夜精品 | 久久天天| 偷拍一区二区 | av丁香 | 91国内外精品自在线播放 | 久久久精品电影 | 国产区免费在线观看 | 在线天堂av | 亚洲一区二区在线 | 欧美一区二区三区精品免费 | 久久亚洲欧美日韩精品专区 |