被網路安全審查、App 全下架,滴滴股價開跌超 7% ,近四個交易日已累跌約 36%
阿新 • • 發佈:2021-07-09
- 面向過程概念
- 面向物件概念
- 類的定義和物件的產生
- 屬性或者方法的查詢
- 練習
面向過程:
- 不是一門技術,是一種程式設計思想
- 核心是過程 過程就是想幹什麼,再敢什麼,最後幹什麼,機械式思維
- 案例:
- 把大象關進冰箱
- 開啟冰箱
- 把大象放進去
- 關閉冰箱
- 把大象關進冰箱
- 案例二
- 優點:
- 複雜的問題簡單化,流程化
- 缺點:
- 擴充套件性差,可維護性差
- 優點:
應用場景:對擴充套件性要求不高
問題:
- 實現使用者註冊:
- 輸入使用者名稱密碼
- 驗證引數
- 註冊
面向物件:
-
核心是 '物件' 二字
-
程式裡面
物件就是盛放資料屬性和功能的容器,
-
現實中
物件就是特徵與技能的結合體
Linux:一切皆檔案
-
-
優點:擴充套件性強
-
缺點:程式設計複雜度高
-
應用場景:對擴充套件性要求較高的場景,比如:qq,微信
-
案例:
西天取經
學生選課內容
類和物件
物件:特徵和節能的結合體
類:一系列物件相似的特徵和相似的技能的結合體
強調:站在不同的角度,劃分的分類是不一樣的
問題: 先有類還是先有物件
-
現實中:
必須先有物件才有類
- 程式中:
必須先定義類,再呼叫類產生物件
專業語法
定義類
class 類名:
psaa
def 函式名():
pass
類名: 一般是首字母大寫
類的定義階段發生了什麼是?
1. 立即執行類體程式碼
2. 產生了類的名稱空間,把類裡面定義的名字都扔到字典裡
3. 把類的名稱空間繫結為類名 類名-dic_
產生物件發生了幾件事
1. 產生一個空物件,並且把該空物件當作第一個引數傳遞
呼叫類的過程就是例項化,得到的物件就是一個例項
定製物件自己獨有的屬性
# 版本3 """ 產生物件發生了幾件事? 1. 產生一個空物件,並且把該空物件當成第一個引數傳遞 """ class Student(): school = 'SH' # 初始化方法 def __init__(stu_obj, name, age, gender, courses=[]): stu_obj.name = name # stu1.__dict__['name'] = 'egon' stu_obj.age = age # stu1.__dict__['age'] = 20 stu_obj.gender = gender # stu1.__dict__['gender'] = 'male' stu_obj.courses = courses # stu1.__dict__['courses'] = [] def choose_course(stu_dic, course): stu_dic['courses'].append(course) print("%s 選課成功 %s" % (stu_dic['name'], stu_dic['courses'])) # print(123) # 類的名稱空間 # print(Student.__dict__) stu1 = Student('egon', 18 ,'male') print(stu1.__dict__) # stu2 = Student() # stu1.name = 'egon' # stu1.__dict__['name'] = 'egon' # stu1.age = 18 # stu1.__dict__['age'] = 20 # stu1.gender = 'male' # stu1.__dict__['gender'] = 'male' # stu1.courses = [] # stu1.__dict__['courses'] = [] # # # stu2.name = 'tom' # stu2.__dict__['name'] = 'egon' # stu2.age = 18 # stu2.__dict__['age'] = 20 # stu2.gender = 'male' # stu2.__dict__['gender'] = 'male' # stu2.courses = [] # stu2.__dict__['courses'] = [] # # init(stu1, 'egon', 18, 'male') # init(stu2, 'tom', 18, 'male') # # # print(stu1.__dict__) # print(stu2.__dict__)
屬性查詢
class Student():
school = 'SH'
# 初始化方法
def __init__(stu_obj, name, age, gender, courses=[]):
stu_obj.name = name # stu1.__dict__['name'] = 'egon'
stu_obj.age = age # stu1.__dict__['age'] = 20
stu_obj.gender = gender # stu1.__dict__['gender'] = 'male'
stu_obj.courses = courses # stu1.__dict__['courses'] = []
def choose_course(self, course):
self.courses.append(course)
print("%s 選課成功 %s" % (self.name, self.courses))
# print(123)
# 類的名稱空間
# print(Student.__dict__)
stu1 = Student('egon', 18 ,'male')
stu2 = Student('tom', 18 ,'male')
# print(stu1.__dict__)
# 1 類的屬性查詢
# print(Student.__dict__['school'])
# # Student.__dict__['xxx'] = 'xxx'
# del Student.__dict__['xxx']
# Student.xxx = 'xxx'
#
# del Student.xxx
# Student.school = 'MMM'
# print(Student.school)
# print(Student.choose_course)
# Student.choose_course(stu1, 'python')
# 物件操作屬性 點語法取值,先從自己物件中取,如果沒有,在取類中取值
# print(stu1.school)
#
# stu1.xxx = 'x'
# del stu1.xxx
# stu1.school = 'y'
# Student.school = 'x'
# print(stu1.school)
# 類中的屬性是共享給所有物件的,但是,類中的方法是給物件用的, 並且,把物件自己當成第一個引數傳遞
# stu1.school = 'y'
# print(stu1.school)
#
# print(stu2.school)
stu1.choose_course('python')