第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

Python-面向對象

劍圣OMG Linux系統(tǒng)工程師
難度中級
時長59分
學習人數(shù)
綜合評分9.13
144人評價 查看評價
9.4 內(nèi)容實用
9.0 簡潔易懂
9.0 邏輯清晰
  • 調用父類的方法用super()


    查看全部
  • fqgqe ef

    查看全部
  • 類的特性:

    封裝性

    繼承

    多態(tài)


    查看全部
  • 函數(shù)和方法最大的區(qū)別在于:

    函數(shù)僅僅是一段供人調用代碼串,處于游離狀態(tài):

    而方法,是依附于某個類中,供其他程序調用

    查看全部
    • 設置對象屬性:通常不必定義,調用從父類繼承的方法

    def?__setattr__(self,?name,?value):
    ????self.__dict__[name]?=?value
    • 查詢對象屬性:

    __getattr__(self, name):訪問屬性在默認情況下沒有被查詢到的情況下調用

    __getattribute__(self, name):每次訪問屬性一定會調用,容易引起無限遞歸,最好調用父類的getattribute

    • 刪除對象屬性

    __delattr__(self, name)


    class?Programer(object):
    ????def?__init__(self,?name,?age):
    ????????self.name?=?name
    ????????self.age?=?age
    ????????
    ????def?__getattribute__(self,?name):
    ????????return?super(Programer,?self).__getattribute__(name)
    ????????
    ????def?__setattr__(self,?name,?value):
    ????????self.__dict__[name]?=?value
    ?????
    if?__name__?=?'__main__':
    ????p?=?Programer('Albert',?25)
    ????print?n.name


    查看全部
  • 在print的過程中,將對象轉換為字符串,包括三種方法:

    1. __str__:轉換成適合人看的字符串

    2. __repr__:轉換成適合機器看的字符串

    3. __unicode__

    展現(xiàn)對象屬性:__dir__

    class?Programer(object):
    ????def?__init__(self,?name,?age):
    ????????self.name?=?name
    ????????if?isinstance(age,?int):
    ????????????self.age?=?age
    ????????else:
    ????????????raise?Exception('age?must?be?int')
    ????def?__str__(self):
    ????????return?'%s?is?%s?years?old'?%?(self.name,?self.age)
    ????????
    ????def?__dir__(self):
    ????????return?self.__dict__.keys()
    ????????
    if?__name__?=?'__main__':
    ????p?=?Programer('Albert',?25)
    ????print?p
    ????print?dir(p)


    查看全部
  • 比較運算符

    __cmp__(self, other):包括以下所有比較情況

    __eq__(self, other):判斷等于情況

    __lt__(self, other):判斷小于情況

    __gt__(self, other):判斷大于情況


    數(shù)字運算符

    __add__(self, other):加

    __sub__(self, other):減

    __mul__(self, other):乘

    __div__(self, other):除


    邏輯運算符

    __or__(self, other):或

    __and__(self, other):與

    class?Programer(object):
    ????def?__init__(self,?name,?age):
    ????????self.name?=?name
    ????????if?isinstance(age,?int):
    ????????????self.age?=?age
    ????????else:
    ????????????raise?Exception('age?must?be?int')
    ????????????
    ????def?__eq__(self,?other):
    ????????if?isinstance(other,?Programer):
    ????????????if?self.age?==?other.age:
    ????????????????return?True
    ????????????else:
    ????????????????return?False
    ????????else:
    ????????????raise?Exception('the?type?of?object?must?be?Programer')
    ????????????
    ????def?__add__(self,?other):
    ????????if?isinstance(other,?Programer):
    ????????????return?self.age?+?other.age
    ????????else:
    ????????????raise?Exception('the?type?of?object?must?be?Programer')


    查看全部
  • 構造對象的過程:

    1. 首先調用__new__方法創(chuàng)建類的對象:def __new__(cls),通常不必定義(繼承父類,父類會創(chuàng)建類對象),返回一個類的初始對象

    2. 將返回的對象交給__init__,對屬性進行設置:def __init__(self)

    class?Programer(object):
    ????def?__new__(cls,?*args,?**kwargs):?#改寫new方法
    ????????print?'call?__new__?method'
    ????????print?args
    ????????return?super(Programer,?self).__new__(cls,?*args,?**kwargs)
    ????def?__init__(self,?name,?age):
    ????????print?'call?__init__?method'
    ????????self.name?=?name
    ????????self.age?=?age
    ????????
    if?__name__?=?'__main__':
    ????programer?=?Programer('Albert',?25)
    ????print?programer.__dict__
    查看全部
  • 多態(tài)的要素:

    1. 繼承

    2. 方法重寫

    class?Programer(object):
    ????hobby?=?'Play?Computer'
    ????
    ????def?__init__(self,?name,?age,?weight):
    ????????self.name?=?name
    ????????self._age?=?age
    ????????self.__weight?=?weight
    ????????
    ????def?self_introduction(self):
    ????????print?'My?name?is?%s?\nI?am?%s?years?old\n'?%?(self.name,?self._age)
    ????
    class?BackendProgramer(Programer):
    ????def?__init__(self,?name,?age,?weight,?language):
    ????????super(BackendProgramer,?self).__init__(name,?age,?weight)
    ????????self.language?=?language????
    ????
    ????def?self_introduction(self):
    ????????print?'My?name?is?%s?\nMy?favorite?language?is?%s'?%?(self.name,?self.language)
    
    def?introduce(programer):
    ????if?isinstance(programer,?Programer):
    ????????programer.self_introduction()
    ???????????????????
    if?__name__?==?'__main__':
    ????programer?=?Programer('Albert',?25,?80)
    ????backend_programer?=?BackendProgramer('Tim',?30,?70,?'Python')
    ????introduce(programer)
    ????introduce(backend_programer)
    查看全部
    1 采集 收起 來源:類的多態(tài)

    2018-07-09

  • 繼承使得大量代碼被復用,是面向對象的優(yōu)勢。

    Object類是一切類的父類。


    繼承的子類會繼承父類的屬性和方法,也可以自己定義,覆蓋父類的屬性和方法。

    在重寫父類時,需要調用父類里的方法-->super()

    class?A(object):
    ????def?method(self,?arg):
    ????????pass
    class?B(A):
    ????def?method(self,?arg):
    ????????super(B,?self).method(arg)

    子類的類型判斷:

    1. isinstance:判斷類型

    2. issubclass:判斷是否是子類

    class?Programer(object):
    ????hobby?=?'Play?Computer'
    ????def?__init__(self,?name,?age,?weight):
    ????????self.name?=?name
    ????????self._age?=?age
    ????????self.__weight?=?weight
    ????????
    ????def?self_introduction(self):
    ????????print?'My?name?is?%s?\nI?am?%s?years?old\n'?%?(self.name,?self._age)
    ????????
    class?BackendProgramer(Programer):
    ????def?__init__(self,?name,?age,?weight,?language):
    ????????super(BackendProgramer,?self).__init__(name,?age,?weight)
    ????????self.language?=?language
    ????????
    if?__name__?==?'__main__':
    ????programer?=?BackendProgramer('Albert',?25,?80,?'Python')
    ????print?dir(programer)
    ????print?programer.__dict__
    ????print?type(programer)?#-->屬于BackendProgramer
    ????print?isinstance(programer,?Programer)?#-->True
    查看全部
  • 函數(shù)與方法的區(qū)別:

    1. 函數(shù):直接調用函數(shù)名的方式

    2. 方法:必須與對象結合使用,依附于類

    類的方法可以看做類的屬性,也沒有訪問控制(與類的屬性一致)。

    兩個裝飾器:

    1. @classmethod,類似直接在類里定義屬性,調用時用類名,而不是某個對象

    2. @property,原調用方法:對象名.方法名(),現(xiàn)調用方法:像訪問屬性一樣調用方法

    class?Programer(object):
    ????hobby?=?'Play?Computer'
    ????def?__init__(self,?name,?age,?weight):
    ????????self.name?=?name
    ????????self._age?=?age
    ????????self.__weight?=?weight
    ????????
    ????@classmethod
    ????def?get_hobby(cls):
    ????????return?cls.hobby
    ????????
    ????@property
    ????def?get_weight(self):
    ????????return?self.__weight
    ????????
    ????def?self_introduction(self):
    ????????print?'My?name?is?%s?\nI?am?%s?years?old\n'?%?(self.name,?self._age)
    ????????
    if?__name__?==?'__main__':
    ????programer?=?Programer('Albert',?25,?80)
    ????print?dir(programer)
    ????print?Programer.get_hobby()?#用類名Programer調用
    ????print?programer.get_weight?#像訪問屬性一樣,不用加括號
    ????programer.self_introduction()


    查看全部
  • 定義類的屬性:

    1. 在類里定義,類里所有對象共享該屬性

    2. 在構造函數(shù)里定義,在構造對象時將屬性值傳入

    3. 沒有訪問控制(JAVA:Public&Private),沒有提供私有屬性的功能

    class?Programer(object):
    ????hobby?=?'Play?Computer'
    ????
    ????def?__init__(self,?name,?age,?weight):
    ????????self.name?=?name?#無下劃線-->可以公開訪問
    ????????self._age?=?age?#有一個下劃線-->私有屬性,仍可訪問
    ????????self.__weight?=?weight?#兩個下劃線-->部分私有屬性,需要改變屬性名訪問
    ????????
    ????def?get_weight(self):?#定義獲取weight屬性的方法
    ????????return?self.__weight
    ????????
    if?__name__?==?'__main__':
    ????programer?=?Programer('Albert',?25,?80)?#對象實例化
    ????print?dir(programer)
    ????print?programer.__dict__?#從構造函數(shù)里獲得的屬性
    ????print?programer.get_weight()
    ????print?programer._Programer__weight?#“對象名._類名__屬性名”的方法訪問
    查看全部
  • 定義類

    class?ClassName:
    ????def?__init__(self,?[……)?#構造函數(shù):設置類的屬性
    ????????pass
    ????def?__del__(self,?[……)?#析構函數(shù):銷毀對象時調用
    ????????pass

    舊式類:

    class?OldStyle:
    ????pass

    新式類:(在python2中,若一個類沒有繼承別的類,最好繼承object類;在python3中,所有類皆是新式類)

    class?NewStyle(object):
    ????pass

    類的內(nèi)建函數(shù):

    1. dir():返回對象的屬性

    2. type():獲取對象的類型

    查看全部
    1 采集 收起 來源:用Python定義類

    2018-07-09

  • 面向對象的兩個基本概念:

    1. 類:定義了一件事物的抽象特點,例如現(xiàn)實生活中的某個群體

    2. 對象:類的實例,例如某個群體中的個體

    面向對象的基本要素:

    1. 屬性(變量),例如某個群體的信息:年齡、性別、身高

    2. 方法(函數(shù)),例如某個群體的功能:寫代碼、修電腦

    面向對象的特性:

    1. 封裝性:對外暴露了功能,隱藏了具體的實現(xiàn)細節(jié)

    2. 繼承:對龐大群體進行細微分類,子類繼承父類的屬性和方法,分為單繼承與多重繼承,例如前端程序員、后端程序員

    3. 多態(tài):由同一個類繼承的幾個類,在調用同一個方法時,會有不同的反應,例如同一類群體對同一件事有不同的看法

    查看全部
  • 比較運算符:

    __cmp__(self,other)、__eq__(self,other) 、__lt__(self,other) 、__gt__(self,other)

    數(shù)字運算符:

    __add__(self,other) 、 __sub__(self,other)?? 、 __mul__(self,other)? 、? __div__(self,other)

    邏輯運算符:

    __or__(self,other) 、? __and__(self,other)


    查看全部

舉報

0/150
提交
取消
課程須知
熱愛編程,對Python基礎知識已經(jīng)掌握。
老師告訴你能學到什么?
1.面向對象的理論基礎 2.Python基本的面向對象特性 3.深入的了解Python面向對象

微信掃碼,參與3人拼團

微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網(wǎng)的支持!