Python3入門與實踐(四) 物件導向

2021-09-11 12:51:21 字數 3047 閱讀 7439

class student():

sum_student = 0

複製**

class student():

# 建構函式 __init__

def __init__(self,name):

self.name = name

# 例項方法第乙個引數不是必須叫self,但是第乙個引數代表的是例項本身(this)

def print_name(self):

print(self.name)

複製**

__dict__在類中代表類的全部屬性的字典,在例項中代表物件的全部屬性的字典

print(student.__dict__)

print(student.__dict__)

複製**

==當通過 student.name獲取變數值的時候,首先會查詢例項變數裡有沒有name屬性,如果有則返回,如果沒有就會去類變數裡找,如果還是沒有則會報錯==

例項方法可以通過self.class.***訪問類變數

例項方法不可以直接訪問類變數

class student():

sum_student = 0

def __init__(self,name):

self.name = name

def print_name(self):

# 例項方法不可以直接訪問類變數

# print(sum_student)

# 這樣可以訪問類變數,但是不推薦

print(self.sum_student)

# 例項方法訪問類變數的正確開啟方式

print(self.__class__.sum_student)

# 訪問例項字典

print(self.__dict__)

print(self.name)

複製**

==類方法和靜態方法不能訪問例項方法!!!!==

class student():

sum_student = 0

# 類方法,第乙個引數代表類本身

@classmethod

def add_and_print_sum(cls):

cls.sum_student+=1

print(cls.sum_student)

# 靜態方法,與類方法不同的是可以不用傳第乙個引數

@staticmethod

def add(x,y):

# 訪問類變數(所有地方都可以這樣訪問類變數)

print(student.sum_student)

print(x+y)

複製**

在方法或者變數前加__ 建構函式__init__ 可以通過外部訪問,是因為init前後都有『__』, 這是python的內建命名風格,自己命名盡量不要這樣做

class student():

def __init__(self,name,score):

self.__name = name

self.__score = score

def __check_score(self,score):

if score>100 or score<0 :

print("分數必須在0-100之間")

return false

return true

def marking(self,score):

if not self.__check_score(score):

return

self.__score = score

print(self.__name+"的當前分數:"+str(self.__score))

複製**

==注意==

stu = student('gwf',10)

# 這樣操作雖然是可以的,但是這不是我們在方法中定義的私有變數__score,而是基於python動態語言的特性,又建立了乙個__score的變數

stu.__score = -1

print(stu.__score)

# 真正我們建立的私有變數,在python中是以_student__score(_類名__私有變數名)進行儲存的

print(stu.__dict__)

# 上面**列印的結果為

# 可以通過stu._student__score 訪問到真正的私有變數,但是不推薦這樣做

print(stu._student__score) # 輸出 10

複製**

class human():

def __init__(self,name,age):

self.__name = name

self.__age = age

def do_homework(self):

print("這是乙個父類方法")

def get_name(self):

return self.name

class student(human):

def __init__(self,name,age,school):

# 不建議這樣用

# human.__init__(self,name,age)

# 正確使用者

super(student,self).__init__(name,age)

self.school = school

def do_homework(self):

super(student,self).do_homework()

# 不可以這樣訪問父類變數

# print(self.__name)

# print(super(student,self).__name)

print(super(student,self).get_name()+"正在做作業")

複製**

Python學習之路四 物件導向

物件 object 可以看做是資料 特性 以及由一系列可以訪問 操作這些資料的方法所組成的集合。主要有以下特點 封裝 主要是乙個隱藏了各種細節的集合,只公開 單元的對外介面 繼承 就像人類遺傳繼承,孩子會繼承父母的特點,但也可以擁有屬於自己的特點 多型 意味著可以對不同類的物件使用同樣的操作。前兩個...

Python3入門與高階

python3入門與高階 第1章 python入門導學 第1章 python入門導學.mp4 第2章 python環境安裝 第2章 python環境安裝.mp4 第3章 理解什麼是寫 與python的基本型別 第3章 理解什麼是寫 與python的基本型別.mp4 第4章 python中表示 組 的...

python3物件導向

類 class 描述同屬性和方法的物件的集合。方法 類中定義的函式 例項化 建立乙個類的例項,類的具體物件。物件 通過類定的資料例。包括兩個資料成員 類變數和例項變數 和方法。支援操作 屬性引用和例項化 class myclass i 12345 deff self return hello wor...