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

python面向對象基礎(一)

系統 1751 0

一. 面向對象編程 Object-Oriented Programing

  • 什么是對象:對象是指現實中的物體或實物;
  • 什么是面向對象:把一切看成對象(實例),用各種對象之間的關系來描述實物
  • 對象都有什么特征:
  1. 對象有很多屬性(名詞):可以通過實例訪問的變量稱為屬性,如:姓名,性別,年齡,...
  2. 對象有很多行為(動作):學習,吃飯,睡覺...
  • 面向對象的最大優勢:每個對象可以管理自己的資源

二. 什么是類

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

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

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

  • 語法:

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

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

四. 構造函數

  • 構造函數調用表達式:(函數名是個類名)

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

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

五. 初始化方法

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

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

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

六. 析構方法

  • 語法:

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

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


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

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


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

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

七. 預置的實例屬性

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

八. 用于類的函數

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

? ? ? ?? python面向對象基礎(一)_第1張圖片

利用Python實現的學生類:

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


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

    def set_score(self, score):
        """self實參將自動被傳遞,它是一個指向實例本身的引用,讓實例能夠訪問類中的屬性和方法"""
        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__":
    # 傳遞的參數由__init__方法的形參決定
    s1 = Student('Limuxia', 22, 99)
    s1.show_info()

    s1.set_score(100)
    s1.show_info()

    s1.set_score(200)
    s1.show_info()

    # 面向對象變成中不建議在調用程序中直接修改和獲取實例的屬性,而是通過方法來返回對象的屬性
print('s1綁定的對象成績是:', s1.get_score())
            
          

?


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久精品综合视频 | 久久久久欧美国产精品 | 青青国产成人久久91 | 国产成人99精品免费视频麻豆 | 天天射天天干天天插 | 成人在线黄色 | 深夜久久| 99视频在线观看免费视频 | 一区二区三区精品国产欧美 | 亚洲欧美高清在线 | 欧美一级在线毛片免费观看 | 精品免费久久久久久影院 | 欧美日视频 | 国内精品一级毛片免费看 | a级亚洲片精品久久久久久久 | 国内精品视频在线播放一区 | 97成人在线视频 | 五月婷视频| 点击进入不卡毛片免费观看 | 狠狠操天天爱 | 加勒比黑人在线 | 国产精品久久天天影视 | 亚洲欧美片| 国产欧美日韩精品第二区 | 91久久国产综合精品女同国语 | 福利视频欧美一区二区三区 | 国产69精品久久久久777 | 中文字幕一区二区三区免费看 | 婷婷色基地| 俄罗斯美女逼 | 天天在线综合网 | 亚洲国产字幕 | 特级毛片免费视频播放 | 亚洲线精品一区二区三区 | 四虎www免费人成 | 欧美日视频| 一本到中文字幕高清不卡在线 | 色噜噜视频 | 国产极品粉嫩福利在线观看 | 国内精品久久久久影院一蜜桃 | 天天碰夜夜 |