亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Python 3 學(xué)習(xí)筆記之——面向?qū)ο?

yzzz / 3392人閱讀

摘要:類的介紹類用來(lái)描述具有相同的屬性和方法的對(duì)象的集合。類變量類變量在整個(gè)實(shí)例化的對(duì)象中是公用的。類的定義語(yǔ)法格式如下類有一個(gè)名為的特殊方法,也即是構(gòu)造函數(shù),該方法會(huì)在定義對(duì)象的時(shí)候自動(dòng)調(diào)用,可以通過(guò)參數(shù)傳遞來(lái)對(duì)類的實(shí)例進(jìn)行設(shè)定。

1. 類的介紹
類(Class) 用來(lái)描述具有相同的屬性和方法的對(duì)象的集合。它定義了該集合中每個(gè)對(duì)象所共有的屬性和方法。對(duì)象是類的實(shí)例,類是對(duì)象的抽象。

方法:類中定義的函數(shù)。

類變量:類變量在整個(gè)實(shí)例化的對(duì)象中是公用的。類變量定義在類中且在函數(shù)體之外。類變量通常不作為實(shí)例變量使用。

方法變量:定義在方法中的變量。

繼承:即一個(gè)派生類(derived class)繼承基類(base class)的屬性和方法。

方法重寫:如果從父類繼承的方法不能滿足子類的需求,可以對(duì)其進(jìn)行改寫,這個(gè)過(guò)程叫方法的覆蓋(override),也成為方法的重寫。

2. 類的定義

語(yǔ)法格式如下:

class ClassName:
    
    .
    .
    .
    

類有一個(gè)名為 _init_() 的特殊方法,也即是構(gòu)造函數(shù),該方法會(huì)在定義對(duì)象的時(shí)候自動(dòng)調(diào)用,可以通過(guò)參數(shù)傳遞來(lái)對(duì)類的實(shí)例進(jìn)行設(shè)定。

在類內(nèi)部,使用 def 關(guān)鍵字來(lái)定義一個(gè)方法,與一般函數(shù)不同,類方法必須包含參數(shù) self,并且作為第一個(gè)參數(shù),self 代表類的實(shí)例,類似于 C++ 中的 this 指針。

類的私有屬性 __private_attrs 以兩個(gè)下劃線開頭,在類內(nèi)部的方法中使用時(shí)用 self.__private_attrs 調(diào)用,不能在類外部訪問類的私有屬性。

類的私有方法 __private_method 以兩個(gè)下劃線開頭,只能在類的內(nèi)部調(diào)用,不能在類外部調(diào)用。

class person:
    
    instances = 0                # 類變量,所有類公用
    
    def __init__(self, name, age, weight):
        self.name = name         # 公有屬性
        self.age = age
        self.__weight = weight   # 私有屬性,在類外無(wú)法直接訪問
        
        person.instances += 1;   # 通過(guò)類來(lái)訪問類變量
    
    def tell_a_secret(self):     # 私有方法
        print("Tell you a secret, my weight is {} kg.".format(self.__weight))
    
    def speak(self):             # 公有方法
        print("My name is {}, I"m {} years old.".format(self.name, self.age))
        self.tell_a_secret()


people = person("seniusen", 21, 60)
people.speak()
print(people.instances)
print(people.instances) # 通過(guò)實(shí)例也可以訪問類變量

# My name is seniusen, I"m 21 years old.
# Tell you a secret, my weight is 60 kg.
# 1
# 1
3. 類的單繼承

語(yǔ)法格式如下:

class DerivedClassName(BaseClassName1):
    
    .
    .
    .
    

注意圓括號(hào)中基類的順序,若是基類中有相同的方法名,而在子類使用時(shí)未指定,則 Python 從左至右進(jìn)行搜索。即方法在子類中未找到時(shí),從左到右查找基類中是否包含該方法。

基類名 BaseClassName 必須與派生類定義在一個(gè)作用域,如果基類定義在另一個(gè)模塊,這時(shí)候我們還可以用一個(gè)表達(dá)式來(lái)定義派生類,class DerivedClassName(modname.BaseClassName):。

class student(person):
        
    def __init__(self, name, age, weight, major):
        
        person.__init__(self, name, age, weight) # 調(diào)用父類的構(gòu)造函數(shù),此時(shí)必須給定 self 參數(shù)
        # super(student, self).__init__(name, age, weight) 或者利用 super() 函數(shù)
        self.major = major

    # 重寫父類的方法
    def speak(self): # 公有方法
        person.speak(self)
        print("My major in college is {}.".format(self.major))

stu = student("seniusen", 21, 60, "Automation")
stu.speak()
print(student.instances)
print(stu.instances) # 通過(guò)實(shí)例也可以訪問類變量

# My name is seniusen, I"m 21 years old.
# Tell you a secret, my weight is 60 kg.
# My major in college is Automation.
# 2
# 2
3. 類的多繼承

語(yǔ)法格式如下:

class DerivedClassName(Base1, Base2, Base3):
    
    .
    .
    .
    
class teacher:
      
    def __init__(self, title, topic):
        self.title = title 
        self.topic = topic
    
    def speak(self): # 公有方法
        print("I"m a {} , my research topic is {}.".format(self.title, self.topic))

# 繼承自 teacher 和 student 的子類
class sample(teacher, student):
    
    def __init__(self, name, age, weight, major, title, topic):
        student.__init__(self, name, age, weight, major)
        teacher.__init__(self, title, topic)

test = sample("seniusen", 21, 60, "Automation", "prefessor", "CV")
test.speak() # 沒有指定方法,從左到右查找,這里調(diào)用了 teacher 類的 speak() 方法

# I"m a prefessor , my research topic is CV.

利用 super() 函數(shù)可以調(diào)用被子類重寫的父類中的方法。

class Parent:           # 定義父類
    
    def myMethod(self):
        print ("Method form Parent class!")

        
class Child(Parent):    # 定義子類
    
    def myMethod(self):
        print ("Method form Child class!")

a = Child()                # 子類實(shí)例
a.myMethod()               # 子類調(diào)用重寫方法
super(Child, a).myMethod() #用子類對(duì)象調(diào)用父類已被覆蓋的方法

# Method form Child class!
# Method form Parent class!

參考資料 菜鳥教程

獲取更多精彩,請(qǐng)關(guān)注「seniusen」!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/44881.html

相關(guān)文章

  • Python入門學(xué)習(xí)筆記匯總

    摘要:導(dǎo)語(yǔ)本文章匯總了本人在學(xué)習(xí)基礎(chǔ)之緒論篇數(shù)據(jù)結(jié)構(gòu)篇函數(shù)篇面向?qū)ο笃刂屏鞒唐驮幊唐獙W(xué)習(xí)筆記的鏈接,打算入門的朋友們可以按需查看并交流。 導(dǎo)語(yǔ):本文章匯總了本人在學(xué)習(xí)Python基礎(chǔ)之緒論篇、數(shù)據(jù)結(jié)構(gòu)篇、函數(shù)篇、面向?qū)ο笃?、控制流程篇和元編程篇學(xué)習(xí)筆記的鏈接,打算入門Python的朋友們可以按需查看并交流。 第一部分:緒論篇 1、Python數(shù)據(jù)模型 第二部分:數(shù)據(jù)結(jié)構(gòu)篇 2、序列構(gòu)成...

    U2FsdGVkX1x 評(píng)論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.30 - 學(xué)習(xí) Python 來(lái)做一些神奇好玩的事情吧

    摘要:學(xué)習(xí)筆記七數(shù)學(xué)形態(tài)學(xué)關(guān)注的是圖像中的形狀,它提供了一些方法用于檢測(cè)形狀和改變形狀。學(xué)習(xí)筆記十一尺度不變特征變換,簡(jiǎn)稱是圖像局部特征提取的現(xiàn)代方法基于區(qū)域圖像塊的分析。本文的目的是簡(jiǎn)明扼要地說(shuō)明的編碼機(jī)制,并給出一些建議。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 開始之前,我們先來(lái)看這樣一個(gè)提問: pyth...

    lifesimple 評(píng)論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.40 - 2018,來(lái)學(xué)習(xí)一門新的編程語(yǔ)言吧!

    摘要:入門,第一個(gè)這是一門很新的語(yǔ)言,年前后正式公布,算起來(lái)是比較年輕的編程語(yǔ)言了,更重要的是它是面向程序員的函數(shù)式編程語(yǔ)言,它的代碼運(yùn)行在之上。它通過(guò)編輯類工具,帶來(lái)了先進(jìn)的編輯體驗(yàn),增強(qiáng)了語(yǔ)言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來(lái)了,總結(jié)過(guò)去的 2017,相信小伙們一定有很多收獲...

    caspar 評(píng)論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.40 - 2018,來(lái)學(xué)習(xí)一門新的編程語(yǔ)言吧!

    摘要:入門,第一個(gè)這是一門很新的語(yǔ)言,年前后正式公布,算起來(lái)是比較年輕的編程語(yǔ)言了,更重要的是它是面向程序員的函數(shù)式編程語(yǔ)言,它的代碼運(yùn)行在之上。它通過(guò)編輯類工具,帶來(lái)了先進(jìn)的編輯體驗(yàn),增強(qiáng)了語(yǔ)言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來(lái)了,總結(jié)過(guò)去的 2017,相信小伙們一定有很多收獲...

    nihao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<