91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中的class是什么意思

發布時間:2020-08-05 17:44:47 來源:億速云 閱讀:1013 作者:小新 欄目:編程語言

python中的class是什么意思?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!

面向對象的設計思想是從自然界中來的,因為在自然界中,類(Class)和實例(Instance)的概念是很自然的。Class是一種抽象概念,比如我們定義的Class——Student,是指學生這個概念,而實例(Instance)則是一個個具體的Student,比如,Bart Simpson和Lisa Simpson是兩個具體的Student。

類和實例

類(Class)和實例(Instance)是面向對象最重要的概念。

類是指抽象出的模板。實例則是根據類創建出來的具體的“對象”,每個對象都擁有從類中繼承的相同的方法,但各自的數據可能不同。

在python中定義一個類:

class Student(object):
    pass

關鍵字class后面跟著類名,類名通常是大寫字母開頭的單詞,緊接著是(object),表示該類是從哪個類繼承下來的。通常,如果沒有合適的繼承類,就使用object類,這是所有類最終都會繼承下來的類。

定義好了 類,就可以根據Student類創建實例:

>>> class Student(object):
...     pass
...
>>> bart = Student() # bart是Student()的實例
>>> bart
<__main__.Student object at 0x101be77f0>
>>> Student # Student 本身是一個類
<class '__main__.Student'>

可以自由地給一個實例變量綁定屬性,比如,給實例bart綁定一個name屬性:

>>> bart.name = "diggzhang"
>>> bart.name'diggzhang'

類同時也可以起到模板的作用,我們可以在創建一個類的時候,把一些認為公共的東西寫進類定義中去,在python中通過一個特殊的__init__方法實現:

class Student(object):
    """__init__ sample."""
    def __init__(self, name, score):
        self.name = name
        self.score = score

__init__方法的第一個參數永遠都是self,表示創建實例本身,在__init__方法內部,可以把各種屬性綁定到self,因為self指向創建的實例本身。

有了__init__方法,在創建實例的時候,就不能傳入空的參數了,必須傳入與__init__方法匹配的參數,但self不需要傳,Python解釋器自己會把實例變量傳進去。如下面的類,在新建實例的時候,需要把name和score屬性捆綁上去:

class Student(object):
    """example for __init__ function passin args."""
    def __init__(self, name, score):
        self.name = name
        self.score = score

我們直接看個實例,如果我們老老實實傳name和score進去的時候,成功聲明了這個實例,但是只傳一個值的時候,報錯:

In [1]: class Student(object):
   ...:     def __init__(self, name, score):
   ...:         self.name = name
   ...:         self.score = score
   ...:

In [2]: bart = Student('diggzhang', 99)

In [3]: bart.name
Out[3]: 'diggzhang'

In [4]: bart.score
Out[4]: 99

In [5]: bart_test = Student('max')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-6-97f4e2f67951> in <module>()
----> 1 bart_test = Student('max')

TypeError: __init__() takes exactly 3 arguments (2 given)

和普通函數相比,在類中定義的函數只有一點不同,就是第一個參數永遠是實例變量self,并且,調用時,不用傳遞該參數。除此之外,類的方法和普通函數沒有什么區別。

面向對象編程的一個重要特點就是數據封裝。在上面的Student類中,每個實例就擁有各自的name和score這些數據。我們可以通過函數來訪問這些數據,比如打印一個學生的成績:

def print_socre(std):
    print("%s: %s" % (std.name, std.score))

print_socre(bart)

# 實際執行效果
In [7]: def print_socre(std):
   ...:         print("%s: %s" % (std.name, std.score))
   ...:

In [8]: print_socre(bart)
diggzhang: 99

既然我們創建的實例里有自身的數據,如果想訪問這些數據,就沒必要從外面的函數去訪問,可以在Student類內部去定義這樣一個訪問數據的函數,這樣就把“數據”給封裝起來了。這些封裝數據的函數和Student類本身關聯起來的,我們稱之為類的方法:

class Student(object):
    def __init__(self, name, score):
        self.name = name
        self.score = score
    def print_socre(self):
        print("%s: %s" % (self.name, self.score))

要定義一個類的方法,除了傳入的第一個參數是self外,其它和普通函數一樣。如果想調用這個方法,直接在實例變量上調用,除了self不用傳遞,其余參數正常傳入:

>>> bart.print_score()Bart Simpson: 59

實際代碼,需要在Python3環境中測試,Python2.7會報錯(NameError: global name 'name' is not defined)

$ python3
Python 3.5.1 (v3.5.1:37a07cee5969, Dec  5 2015, 21:12:44)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> class Student(object):
...     def __init__(self, name, score):
...         self.name = name
...         self.score = score
...     def print_score(self):
...         print("%s: %s" % (self.name, self.score))
...
>>> bart = Student('zhang', 99)
>>> bart.print_score()
zhang: 99
>>>

數據和邏輯都被封裝起來,直接調用方法即可,但卻可以不用知道內部的細節。

類,是創建實例的模板,而 實例 則是一個一個具體的對象,各個實例擁有的數據都互相獨立,互不影響;

方法 就是與實例綁定的函數,和普通函數不同,方法可以直接訪問實例的數據;

通過在實例上調用方法,我們就直接操作了對象內部的數據,但無需知道方法內部的實現細節。

感謝各位的閱讀!看完上述內容,你們對python中的class是什么意思大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

通城县| 卓资县| 岳阳市| 江源县| 新田县| 呼伦贝尔市| 巴南区| 北碚区| 卓资县| 平邑县| 南投县| 佛山市| 金平| 瓦房店市| 盱眙县| 长葛市| 林州市| 资中县| 甘南县| 闽清县| 福清市| 岳阳县| 宁明县| 苍山县| 高唐县| 青田县| 张北县| 焉耆| 西安市| 横山县| 开平市| 金门县| 阳原县| 威海市| 饶阳县| 黎平县| 绥宁县| 宁河县| 德江县| 顺义区| 太仓市|