Python_面向對象

1 類的定義

類的理解:它是現實世界或思維世界中的實體在計算機中的反映,它將數據(類的數據成員)以及這些數據上的操作(方法,其他語言稱爲函數)封裝在一起。
類就像一個模板,通過這個模板可以產生很多個對象
類的最基本的作用就是封裝代碼

class Student():  # 類的定義
    name = "Lilly"
    age = 18

    def print_file(self):
        print('name: '+self.name)
        print('age: '+str(self.age))


student1 = Student()  # 實例化
student1.print_file()  # 調用類裏面的方法

2 構造函數

class Student():  # 類的定義
    name = ""
    age = 0    # 此處name和age是類變量

    def __init__(self,name,age): # 構造函數
        print('*******')
        self.name = name
        self.age = age    # 此處的self.name和self.age是實例變量,只和對象相關

    def print_file(self):
        print('name: '+self.name)
        print('age: '+str(self.age))



student1 = Student('Tom',19)  # 實例化
student2 = Student('Sam',18)
student1.print_file()  # 調用類裏面的方法
student2.print_file()

類變量和實例變量

類變量就是和類相關聯的變量;
實例變量是和對象相關聯的變量,在構造函數裏通過self.變量名來保存實例變量

類與對象的變量查找順序

訪問一個實例變量,如果對象實例列表沒有,會繼續在類變量裏去尋找。

3 self與實例方法

self代表的是對象實例;對於類下面的實例方法,在定義的時候self必須出現。但在調用實例方法的時候是不需要傳入self的。

在實例方法中訪問實例變量與類變量

這裏寫圖片描述
方法需要對變量做一系列運算,然後去改變類的特徵。
1. 實例方法與構造函數的調用方法不一樣,構造函數的調用,是通過類名(變量)來調用,比如:student1=Student(‘qxn’,24)來調用,而實例方法是通過對象來調用的,比如:student.do_homework()來進行的。
2. 實例方法與構造函數的意義不同,實例方法主要是來描述類的行爲,而構造函數主要是來初始化類的各種特徵。
在實例方法中訪問類變量:
1. 通過類名.變量名來進行訪問
2. 通過self.class.name來進行訪問

4 類方法

@classmethod        # 在方法上面加@classmethod裝飾器表示類方法
    def plus_sum(cls):
        cls.sum += 1
        print(cls.sum)

調用類方法:
直接用類來調用:
Student.plus_sum()

5 靜態方法

  1. 靜態方法裝飾器@staticmethod
  2. 無需傳入cls,self等參數,可以被類和方法調用
  3. 靜態方法和類方法不能訪問實例變量
  4. 靜態方法可以被類方法代替,它與面向對象的關係很弱,和普通函數區別不大。不建議使用

6 成員可見性:公開和私有

變成私有的方法:變量或者方法前加雙下劃線
python可以通過在實例對象後加.__value的形式創建成員變量。————python的動態屬性

7 子類方法調用父類方法:super關鍵字

調用形式:super(子類名,self).父類方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章