亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

python面向?qū)ο蠡A(chǔ)(一)

系統(tǒng) 2037 0

一. 面向?qū)ο缶幊?Object-Oriented Programing

  • 什么是對象:對象是指現(xiàn)實中的物體或?qū)嵨铮?
  • 什么是面向?qū)ο螅喊岩磺锌闯蓪ο?實例),用各種對象之間的關(guān)系來描述實物
  • 對象都有什么特征:
  1. 對象有很多屬性(名詞):可以通過實例訪問的變量稱為屬性,如:姓名,性別,年齡,...
  2. 對象有很多行為(動作):學(xué)習(xí),吃飯,睡覺...
  • 面向?qū)ο蟮淖畲髢?yōu)勢:每個對象可以管理自己的資源

二. 什么是類

? ? ? ?擁有相同屬性,行為的對象分為一組,即為一個類。類是用來描述對象的工具,用類可以創(chuàng)建此類的對象(實例)。int float complex dict bytes set str tuple list ValueError ... python中已經(jīng)為我們寫好了很多類,但并不能滿足所有需求,有時需要我們自己創(chuàng)建類,類的創(chuàng)建使用class語句,如下:

  • 語法:
    ?? ??? ?class 類名(繼承列表):
    ?? ??? ??? ?'''類文檔字符串'''
    ?? ??? ??? ?實例方法定義
    ?? ??? ??? ?類變量定義
    ?? ??? ??? ?類方法定義(@classmethod)
    ?? ??? ??? ?靜態(tài)方法定義(@staticmethod)
  • 作用:
  1. 創(chuàng)建一個類;
  2. 用于描述對象的行為和屬性;
  3. 用于創(chuàng)建此類的一個或多個同類對象(實例)
  • 說明:
  1. 繼承列表可以省略,省略繼承列表表示此類繼承自object;
  2. 類名必須為標(biāo)識符;
  3. 類名實質(zhì)是個變量,綁定一個類

三.?實例方法和實例屬性

  • 語法:

?? ??? ?class 類名(繼承列表):
?? ??? ??? ?def 實例方法(self, 形參1, 形參2, ...):
?? ??? ??? ??? ?'''方法的文檔字符串'''
?? ??? ??? ??? ??? ?語句塊

  • 作用:用于描述一個對象的行為,讓此類型的全部對象都擁有相同的行為;
  • 說明:
  1. 實例方法的實質(zhì)是函數(shù),是定義在類內(nèi)的函數(shù);
  2. 實例方法至少有一個形參,第一個形參代表調(diào)用這個方法的實例,一般命名為'self';
  • 實例方法的調(diào)用語法:
  1. 實例.實例方法名(調(diào)用傳參)
  2. 類名.實例方法名(實例,調(diào)用傳參)
  • 實例屬性也叫實例變量:每個實例可以使用自己的變量,稱為實例變量(也叫屬性)
  1. 使用語法:實例.屬性名;
  2. 屬性的賦值規(guī)則:首次為屬性賦值則創(chuàng)建屬性,再次為屬性賦值則改變屬性的綁定關(guān)系;
  3. 作用:記錄每個對象自身的數(shù)據(jù);
  4. 刪除屬性:del 對象.屬性名
  • del 語句總結(jié):
  1. 刪除變量 del a;
  2. 刪除列表中的元素 del L[0];
  3. 刪除字典中的鍵 del d['name'];
  4. 刪除對象的屬性 del dog1.color

四. 構(gòu)造函數(shù)

  • 構(gòu)造函數(shù)調(diào)用表達式:(函數(shù)名是個類名)

?? ??? ?類名([創(chuàng)建傳參列表])

  • 作用:創(chuàng)建這個類的實例對象,并返回此實例對象的引用關(guān)系;
  • 說明:
  1. 實例有自己的作用域和名字空間,可以為該實例添加實例變量(也叫屬性);
  2. 實例可以調(diào)用類方法和實例方法;
  3. 實例可以訪問類變量和實例變量

五. 初始化方法

  • 作用:對新創(chuàng)建的對象添加屬性等初始化操作;
  • 語法格式:

?? ??? ?class 類名(繼承列表)
?? ??? ??? ?def __init__(self[,形參列表])
?? ??? ??? ??? ?語句塊
?? ??? ?注:[]里的內(nèi)容代表可省略

  • 說明:
  1. 初始化方法名必須為__init__不可改變;
  2. 初始化方法會在構(gòu)造函數(shù)創(chuàng)建實例后自動調(diào)用;
  3. 構(gòu)造函數(shù)的實例將通過__init__方法的參數(shù)列表傳入到__init__方法中;
  4. 初始化方法內(nèi)如果需要return語句返回,則只能返回None。

六. 析構(gòu)方法

  • 語法:

?? ??? ?class 類名(繼承列表):
?? ??? ??? ?def __del__(self):
?? ??? ??? ??? ?語句塊

  • 作用:通常用來釋放此對象占用的資源;
  • 說明:析構(gòu)方法會在對象被銷毀時自動調(diào)用;python語句建議不要在對象銷毀時做任何事情,因為對象銷毀的時間難以確定。
  • code
            
              """析構(gòu)方法的用法"""


class Car:
    """docstring for Car"""
    def __init__(self, name):
        self.name = name
        print('汽車', name, '對象被創(chuàng)建')

    def __del__(self):
        print('汽車', self.name, '對象被銷毀')


c1 = Car('BYD E6')
l1 = list()
l1.append(c1)
# 引用計數(shù)法:雖然c1變量綁定了None對象,但列表中仍有變量綁定Car('BYD E6')對象,故Car('BYD E6')不被銷毀
c1 = None

# 阻止程序退出,因為在程序退出時,對象將被自動銷毀
while True:
    pass
            
          

七. 預(yù)置的實例屬性

  • __dict__屬性:綁定一個存儲此實例自身變量的字典
  • __class__屬性:綁定創(chuàng)建此實例的類(類實例),可以借助此屬性來訪問創(chuàng)建此實例的類

八. 用于類的函數(shù)

  • isinstance(obj, class_or_tuple)? ? 返回這個對象obj是否是某個類的對象,或者某些類中的一個類的對象,如果是則返回True,否則返回False;
  • type(obj)? ? 返回對象的類
  • 示例:

? ? ? ?? python面向?qū)ο蠡A(chǔ)(一)_第1張圖片

利用Python實現(xiàn)的學(xué)生類:

            
              """此類用來描述學(xué)生信息.要求如下:
1.為該類添加初始化方法,實現(xiàn)在創(chuàng)建對象時自動設(shè)置'姓名' '年齡' '成績'屬性;
2.添加set_score方法,能為對象修改成績信息,并限制成績在0-100之間;
3.添加show_info方法打印學(xué)生對象的信息
"""


class Student:
    def __init__(self, name, age, score):
        """每當(dāng)根據(jù)student類創(chuàng)建實例時,都將自動運行此方法"""
        self.name = name
        self.age = age
        self.score = score

    def set_score(self, score):
        """self實參將自動被傳遞,它是一個指向?qū)嵗旧淼囊?讓實例能夠訪問類中的屬性和方法"""
        try:
            assert 0 <= score <= 100, '成績有誤,無法修改!'
            self.score = score
        except AssertionError as err:
            print(score, err)

    def show_info(self):
        print('%s今年%d歲,成績是:%d' % (self.name, self.age, self.score))

    def get_score(self):
        return self.score


if __name__ == "__main__":
    # 傳遞的參數(shù)由__init__方法的形參決定
    s1 = Student('Limuxia', 22, 99)
    s1.show_info()

    s1.set_score(100)
    s1.show_info()

    s1.set_score(200)
    s1.show_info()

    # 面向?qū)ο笞兂芍胁唤ㄗh在調(diào)用程序中直接修改和獲取實例的屬性,而是通過方法來返回對象的屬性
print('s1綁定的對象成績是:', s1.get_score())
            
          

?


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 97在线播放视频 | 97视频在线观看免费视频 | 日本中文字幕一区二区高清在线 | 欧美午夜在线观看 | 国模和精品嫩模私拍视频 | 伊人久久波多野结衣中文字幕 | 亚洲精品第一国产综合高清 | 女人一级毛片免费观看 | 日韩在线a视频免费播放 | 国产一级毛片大陆 | 最新久久免费视频 | 欧美一区二区三区免费观看视频 | 日本久久精品免视看国产成人 | 四虎免费永久观看 | 免费久久精品视频 | 久久久夜间小视频 | 性生生活三级视频观看 | 特级毛片www欧美 | 国产一区亚洲二区三区 | 久久精品免费在线观看 | 成人精品第一区二区三区 | 九九re6精品视频在线观看 | 在线不卡福利 | 国产成人午夜 | 国产中日韩一区二区三区 | 久久国产精品老人性 | 国产精品福利资源在线 | 欧美成人看片黄a免费 | 国产精品日本一区二区在线播放 | 日本欧美久久久久免费播放网 | 日本特黄a级高清免费大片18 | h视频在线观看网站 | 老王午夜69精品影院 | 欧美色久| 999精品视频在线观看 | 91日本在线精品高清观看 | 国产欧美在线观看一区二区 | 国产成人免费视频精品一区二区 | 国产一区精品 | 国产大尺度福利视频在线观看 | 在线中文字幕一区 |