面向過程的核心是過程,解決問題的過程,即先做什麼,在做什麼,最後做什麼
面向過程就像是設計一條流水線
優點:複雜的問題流程化,進而簡單話
缺點:牽一髮而動全身,擴充套件性差,可維護性差
應用場景:對擴充套件性要求不高的地方(比如安裝包)
物件導向核心是物件
什麼是物件
1.程式中
函式:盛放資料的容器
物件:盛放資料和函式的容器
2.現實生活中
一切都是物件
物件:特徵與技能的結合體
優點:擴充套件性強,可維護性強
缺點:程式設計複雜度高
def choose_course(stu_dict, course):
print('%s選課成功 %s' % (stu_dict['name'], stu_dict['course']))
物件:特徵與技能的結合體
類:一系列物件相似的特徵和相似的技能的結合體
強調:站在不同的分類,劃分的分類不一定一樣
到底是先有類還是先有物件?
1. 程式中:
必須先定義類,然後呼叫類產生物件
2. 現實生活中:
先有物件,在有人類
使用專業的語法定義類:
1. 定義函式
def 函式名():
pass
2. 定義類:
class 類名():
pass
定義類發生了什麼事?
1.立即執行類體**
2.產生乙個類的命名空間,把類體裡面執行的名字都扔到命名空間中
3.把類的命名空間繫結給__dict__,類名.__dict__
# 類名的首字母一般都是大寫
class student():
# 定義乙個屬性
# 變數放到類裡面就稱為屬性
school = 'sh'
# 定義乙個技能(函式)
# 函式放到類裡面就稱為方法
def choose_course(stu_dict, course):
print('%s選課成功%s' % (stu_dict['name'], stu_dict['course']))
print('!!!!!!')
# 類只要定義類就會執行
# 檢視類的命名空間
print(student.__dict__)
# 產生物件
# 呼叫類返回的結果就是物件
# 預設產生的是乙個空物件{}
stu1 = student()
# 檢視物件的命名空間
呼叫類發生了幾件事?
1.得到乙個空物件
2.呼叫了student.__dict__
3.得到乙個初始化結果
# 類名的首字母一般都是大寫
class student():
# 定義乙個屬性
# 變數放到類裡面就稱為屬性
school = 'sh'
# 定義乙個技能(函式)
# 函式放到類裡面就稱為方法
def choose_course(stu_dict, course):
print('%s選課成功%s' % (stu_dict['name'], stu_dict['course']))
# 初始化
# 自動傳值
# 呼叫類自動觸發函式
# 該方法不一定要定義
def __init__(stu_obj, name, age, gender):
stu_obj.name = name
stu_obj.age = age
stu_obj.gender = gender
# 在這個方法中不能有返回值
stu1 = student('aaa', 18, 'male')
stu2 = student('sss', 18, 'male')
print(stu1.__dict__)
print(stu1.name)
print(stu2.name)
print(stu1.school) # 先在物件命名空間找,再在類命名空間找
# print(stu1.__dict__) 報錯,這是在物件自己的命名空間找,自己的命名空間沒有
# 定義乙個屬性
school = 'sh'
def __init__(self, name, age, gender, course=none):
if course is none:
course =
self.name = name # stu1.__dict__['name'] = 'jason'
self.age = age # stu1.__dict__['age'] = 18
self.gender = gender # stu1.__dict__['gender'] = 'male'
self.course = course
def choose_course(self, course):
# stu_dict => stu
print('%s選課成功 %s' % (self.name, self.course))
def func(self, name, age):
pass
# 屬性的查詢:
# 1. 類屬性: 在類中寫的屬性就稱為類屬性
# 2. 物件屬性:在物件自己的命名空間中的屬性就是物件屬性
# 類屬性的查詢
# 1. 查
# print(student.school)
# 2. 增加
# student.country = 'china'
# 3. 改
# student.school = 'bj'
# 4. 刪除
# del student.school
# print(student.__dict__)
# {}
stu = student('ly', 18, 'male') # 例項化物件, stu就是乙個例項
# 物件屬性
# 1. 查
# print(stu.name)
# print(stu.age)
# print(stu.gender)
# 2. 增
# stu.aaa = 'aaa'
## # 3. 改
# stu.name = 'bbb'
# 4. 刪除
# del stu.name
# print(stu.__dict__)
# 類中的方法,類可以呼叫,物件也可以呼叫
# 類呼叫方法
# student.choose_course(stu, 'python') # 類來呼叫,函式的引數有幾個就要傳幾個
# print(student.choose_course)
# 物件呼叫方法
# 類中的方法,類可以呼叫,物件也可以呼叫, 但是,推薦物件來呼叫,因為物件來呼叫,會把自己當成第乙個引數傳遞給函式
物件導向 物件和類
類和物件使物件導向程式設計技術中的最基本概念。是現實或思維世界中的實體在計算中的反映,它將資料以及這些資料上的操作封裝在一起。類是抽象的,是建立例項物件的模板 是具有類型別的變數 是乙個乙個具體的例項 物件中包含類的屬性和方法 類和物件的區別就是 魚和三文魚 貓和藍貓的區別。class 類名稱 cl...
物件導向 物件和類
物件導向 object oriented 簡稱oo 物件導向的學習 物件導向的語法的學習 簡單,靠記憶就可以,比較多 面對物件的思想的學習 稍微有一點難度,不太適應 物件導向的優勢 能夠實現良好程式結構,方便程式的開發和管理維護!效率 執行效率 計算機 物件導向效率不如過程化的快 開發效率 程式設計...
物件導向和類
物件導向的目的 1.把現實世界的事和物轉換到計算機中。2.把現實世界的事和物對應到計算機的 類 上。3.用類組織一批不同型別的資料 現實世界的物件 計算機中的類 計算機記憶體中的物件 無論什麼樣的專案用 物件導向 設計模式 物件導向的設計原則 都可以設計出很好的框架 類 1.什麼是類 類是一種資料結...