'''
程式=資料+功能
學生的容器=學生的資料+學生的功能
課程的容器=課程的資料+課程的功能
粉撲、眼影、各種顏料=》原材料=》資料
眉筆、小刷子 =》工具 =》功能
模組是乙個物件,列表字典元組集合也可以作為物件,是種思想,
#student.py
# 學生的資料
stu_name='egon'
stu_age=18
stu_gender='male'
# 學生的功能
def tell_stu_info():
print('學生資訊:名字:%s 年齡:%s 性別:%s' %(stu_name,stu_age,stu_gender))
def set_info(x,y,z):
stu_name=x
stu_age=y
stu_gender=z
'''
提高程式的解耦合程度,進而提公升了程式的可擴充套件性
類是物件相似資料與功能的集合體
類體中最常見的是變數與函式的定義,但是類體中也可以包含任意其他**
注意:類體**在定義階段就會立即執行,會產生類的命名空間
(定義階段就產生)
# 類名推薦使用駝峰體
class student:
# 1、變數的定義
school_name='某某大學'
count = 0
# 2、功能的定義
def __init__(self, name, age):
student.count += 1
self.name = name
self.age = age
def stu_info(self, stu_name, stu_age):
print(f'學生資訊:姓名: 年齡:')
print("歡迎來到%s" % school_name)
# 屬性訪問的語法
# 1、屬性訪問資料的語法
print(student.school_name)
# print(student.__dict__['school_name'])
# 2、屬性訪問功能的語法
print(student.stu_info)
# print(student.__dict__['stu_info'])
呼叫類的過程又稱之為例項化,例項化中發生的三件事
先產生乙個空物件
python自動呼叫類中的__init__方法,將空物件以及呼叫類時括號內傳入的引數一同傳給__init__方法
返回初始完的物件
# 一呼叫類,類中的__init__()就會自動的將物件stu_obj1作為第乙個引數傳入
stu1_obj=student('egon',18,'male')
# student.__init__(空物件,'egon',18,'male')
stu2_obj=student('lili',19,'female')
stu3_obj=student('jack',20,'male')
會在呼叫類時自動觸發執行,用來為物件初始化自己獨有的資料
__init__內應該存放的是為物件初始化屬性的功能,但是是可以存放任意其他**的想要在類呼叫時就立刻執行的**都可以放到該方法內
__init__方法必須返回none
student('egon', 18)
print(stu1_obj.__init__('egon', 19)) # none
#類中存放的是物件共有的資料與功能
class student:
# 1、變數的定義
stu_school='oldboy'
count=0
# 空物件,'egon',18,'male'
def __init__(self,x,y,z):
student.count += 1
self.stu_name=x # 空物件.stu_name='egon'
self.stu_age=y # 空物件.stu_age=18
self.stu_gender=z # 空物件.stu_gender='male'
# return none
# 2、功能的定義
def tell_stu_info(self):
print('學生資訊:名字:%s 年齡:%s 性別:%s' %(
self.stu_name,
self.stu_age,
self.stu_gender
))def set_info(self,x,y,z):
self.stu_name=x
self.stu_age=y
self.stu_gender=z
def choose(self,x):
print('正在選課')
print(self,'呼叫了繫結方法')
self.course=x
stu1_obj=student('egon',18,'male')
# student.__init__(空物件,'egon',18,'male')
stu2_obj=student('lili',19,'female')
stu3_obj=student('jack',20,'male')
print(student.stu_school)
print(student.tell_stu_info)
print(student.set_info)
print(id(student.stu_school))
print(id(stu1_obj.stu_school))
print(student.tell_stu_info)
print(student.set_info)
student.tell_stu_info(stu1_obj)
student.set_info(stu1_obj,'egon',19,'male')
student.tell_stu_info(stu1_obj)
繫結方法的特殊之處在於:誰來呼叫繫結方法就會將誰當做第乙個引數自動傳入
print(stu1_obj)
stu1_obj.choose('python全棧開發')
print(stu1_obj.course)
c 物件導向程式設計 物件導向
什麼是物件導向 是對現實世界理解和抽象的方法。物件導向程式設計的特點 易維護,易擴充套件,靈活性好,重用 類 對事物的抽象定義,即事物具有的共同特徵和行為。物件 即對類進行例項 類是抽象的,物件是具體的 類的定義 語法 訪問修飾符 class 類名類的成員 包括字段,屬性,方法,常量,事件和索引器等...
物件導向程式設計
物件導向程式設計 抽象 封裝 繼承 多型 單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因。開放封閉原則 軟體實體應該可以擴充套件,但是不可修改。所有的設計模式都是對不同的可變性進行封裝,從而使系統在不同的角度上達到開發封閉原則。依賴倒轉原則 a 高層不應該依賴低層,兩個都應該依賴抽象。b ...
物件導向程式設計
class team def init self self.name tampa bay buccaneers bucs team print bucs.name tampa bay buccaneers 當呼叫team 函式時,會自動呼叫init函式,self是自動傳入到init中的引數,它指向當...