Python 七 高階部分 物件導向

2021-08-30 08:56:03 字數 4614 閱讀 9261

一、類的定義

# 物件導向

#有意義的物件導向**

# 類 = 物件導向

# 類、物件

#例項化

# 類最基本的作用:封裝

class student():

name = ''

age = 0

def print_file(self):

print('name'+self.name)

print('name'+str(self.age))

student=student() #例項化

student.print_file()

二、**函式與方法的區別

方法 和 函式的區別

方法 :設計層面

函式:程式執行、過去式的一種稱謂

三、類與物件。

類是描述 一類的 行為和特徵

物件是具體的描述物件

類像乙個模板一樣  可以生成許多不同的物件

四、建構函式

#類、物件

class student():

name = ''

age = 0

#行為 與 特徵

def __init__(self):

#建構函式

print('student')

def print_file(self):

print('name'+self.name)

print('name'+str(self.age))

s=student()

s.__init__()

student #例項化時候 呼叫了建構函式

student #單獨呼叫了了建構函式

建構函式不能返回除了none 以外的值

五、區別模組變數與類中的變數

六、類變數與例項變數

class student():

name = '' #類變數

age = 0

#行為 與 特徵

#類變數、例項變數

def __init__(self,name,age):

#建構函式

#初始化物件的屬性

self.name=name #定義例項變數

self.age=age

# print('student')

def print_file(self):

print('name'+self.name)

print('name'+str(self.age))

s=student('大明',20)

print(s.name) #列印例項變數 需要在類裡面儲存例項變數

print(student.name) #列印類變數

大明

''

七、類與物件的變數查詢順序

例項名稱. __dict__  類中例項變數

八、self與例項方法

self 代表的例項 而不是類

九、在例項方法中訪問例項變數與類變數

class student():

name = 'qiyue' #類變數

age = 0

#行為 與 特徵

#類變數、例項變數

def __init__(self,name,age):

#建構函式

#初始化物件的屬性

self.name=name #定義例項變數

self.age=age

print(self.name)

print(self.__class__.name) #在例項方法中訪問類變數

print(student.name)

# print('student')

def print_file(self):

print('name'+self.name)

print('name'+str(self.age))

s=student('大明',20)

大明 #例項變數

qiyue #訪問類變數

qiyue # 類變數

十、類方法

class student():

sum = 0

name = 'qiyue' #類變數

age = 0

#行為 與 特徵

#類變數、例項變數

def __init__(self,name,age):

#建構函式

#初始化物件的屬性

self.name=name #定義例項變數

self.age=age

self.__class__.sum +=1

print('當前學生總數為:'+ str(self.__class__.sum))

# print('student')

#例項方法

def do_homework(self):

print('do_homework')

@classmethod #類方法

def plus_sum(cls):

cls.sum +=1

print(cls.sum)

s=student('大明',20)

student.plus_sum()

結果:當前學生總數為:1

2

一、靜態方法

和類和物件沒有關係  建議不要經常用

@staticmethod #靜態方法

def add(x,y):

print('this is 靜態方法')

二、成員可見性:公開和私有

通過方法來改變類中變數的值

public  private python中沒有這些關鍵字

在變數和方法前面加上雙下劃線 name __name

python 允許 例項化點來新增新的變數

通過 _類名__私有變數

十三、沒有什麼是不能訪問

十四、繼承.

class human():

sum = 0

def __init__(self,name,age):

self.name = name

self.age = str(age)

def get_name(self):

print(self.name)

class student(human):

# sum = 0

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

self.school = school

human.__init__(self,name,age)

# self.__score = 0

# self.__class__.sum +=1

def do_homework(self):

print('do_homework')

s = student('學校','拾光',18)

print(s.sum)

print(s.name)

print(s.age)

print(s.get_name())

結果:0

拾光18

拾光none

五、子類方法呼叫父類方法:super關鍵字

class human():

sum = 0

def __init__(self,name,age):

self.name = name

self.age = str(age)

def get_name(self):

print(self.name)

class student(human):

# sum = 0

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

self.school = school

# human.__init__(self,name,age)

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

# self.__score = 0

# self.__class__.sum +=1

def do_homework(self):

print('do_homework')

s = student('學校','拾光',18)

print(s.sum)

print(s.name)

print(s.age)

print(s.get_name())

結果:0

拾光18

拾光none

物件導向高階特性部分總結

繼承規則 在構造方法中,呼叫構造方法可以使用this和super關鍵字。package test2 author xiaochen public class animal public animal string string public void test package test2 autho...

Python物件導向(七)多型

當子類和父類都存在相同的run 方法時,我們說,子類的run 覆蓋了父類的run 在 執行的時候,總是會呼叫子類的run 這樣,我們就獲得了繼承的另乙個好處 多型。a list a是list型別 b animal b是animal型別 c dog c是dog型別 判斷乙個變數是否是某個型別可以用is...

Python物件導向程式設計高階

在前面的章節我們已經了解了物件導向的入門知識,知道了如何定義類,如何建立物件以及如何給物件發訊息。為了能夠更好的使用物件導向程式設計思想進行程式開發,我們還需要對python中的物件導向程式設計進行更為深入的了解。property裝飾器 之前我們討論過python中屬性和方法訪問許可權的問題,雖然我...