一、類的定義
# 物件導向
#有意義的物件導向**
# 類 = 物件導向
# 類、物件
#例項化
# 類最基本的作用:封裝
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中屬性和方法訪問許可權的問題,雖然我...