python高階6 面向對象重新梳理
阿新 • • 發佈:2018-06-03
擴展 知識 面向 enc 博文 learning open 技能 style
關於本篇博文:
面向對象中所有的內容的重新梳理,其實面向對象的知識早在一個多月前就學習過並整理過,但是發現還是有所欠缺,故在此以極其簡介的語言風格重新梳理一遍
面向對象詳細介紹:http://www.cnblogs.com/wyb666/p/8728621.html
一、面向過程與面向對象
1.面向過程
1 # 面向過程:核心是過程二字,過程指的是解決問題的步驟,設計一條流水線,機械式的思維方式 2 # 優點:復雜的問題流程化,進而簡單化 3 # 缺點:可擴展性差 4 # 以下是面向過程的實例(用戶註冊),用戶註冊的流程為:用戶輸入信息->判斷用戶信息是否合法->合法就保存用戶數據5 import json 6 import re 7 8 9 def interactive(): 10 """ 11 用戶輸入信息 12 :return: 以字典形式返回註冊賬號的信息 13 """ 14 name = input(‘name>>>‘).strip() 15 pwd = input(‘password>>>‘).strip() 16 email = input(‘email>>> ‘).strip() 17 return { 18 ‘name‘: name, 19 ‘pwd‘: pwd, 20 ‘email‘: email 21 } 22 23 24 def check(user_info): 25 """ 26 判斷用戶輸入信息是否正確 27 :param user_info: 用戶信息 28 :return: 返回字典(用戶信息及合法性) 29 """ 30 is_valid = True # is_valid表示合法性 31 # 判斷用戶名的合法性 32 if len(user_info[‘name‘]) == 0: 33 print(‘用戶名不能為空‘) 34 is_valid = False 35 # 判斷密碼的合法性 36 if len(user_info[‘pwd‘]) < 6: 37 print(‘密碼不能少於6位‘) 38 is_valid = False 39 # 判斷郵箱格式的合法性 40 if not re.search(r‘@.*?\.com$‘, user_info[‘email‘]): 41 print(‘郵箱格式不合法‘) 42 is_valid = False 43 return { 44 ‘is_valid‘: is_valid, 45 ‘user_info‘: user_info 46 } 47 48 49 def register(check_info): 50 """ 51 如果合法就註冊用戶(把用戶信息導入json文件中) 52 :param check_info: 包含用戶信息及合法性的字典 53 :return: 54 """ 55 if check_info[‘is_valid‘]: 56 with open(‘db.json‘, ‘w‘, encoding=‘utf-8‘) as f: 57 json.dump(check_info[‘user_info‘], f) 58 59 60 # 程序主函數 61 def main(): 62 user_info = interactive() 63 check_info = check(user_info) 64 register(check_info) 65 66 67 # 程序主入口 68 if __name__ == ‘__main__‘: 69 main()
2.面向對象
1 # 面向對象:核心就是對象二字,對象就是特征與技能的結合體 2 # 優點:可擴展性強 3 # 缺點:編程復雜度高 4 # 應用場景:用戶需求經常變化,互聯網應用,遊戲,企業內部應用 5 6 # 類就是一系列對象相似的特征與技能的結合體 強調:站在不同的角度,得到的分類是不一樣的 7 # 另外在現實世界中一定先有對象,後有類; 在程序中一定得先定義類,後調用類來產生對象 8 9 10 # 先定義類 11 class Student: 12 # 特征: 13 school = ‘luffycity‘ 14 15 # 技能: 16 def learn(self): 17 print(‘is learning‘) 18 19 def eat(self): 20 print(‘is sleeping‘) 21 22 23 # 後產生對象 24 stu1 = Student() 25 stu2 = Student() 26 stu3 = Student() 27 28 print(stu1) 29 print(stu2) 30 print(stu3)
二、面向對象入門
1.類與對象的基本使用
(1)類的定義
1 # 定義類 2 class Student: 3 # 數據屬性 4 school = ‘luffycity‘ 5 6 # 函數屬性 7 def learn(self): 8 print(‘is learning‘) 9 10 def eat(self): 11 print(‘is sleeping‘) 12 13 14 # 查看類的名稱空間 15 print(Student.__dict__) 16 print(Student.__dict__[‘school‘]) 17 print(Student.__dict__[‘learn‘]) 18 print(Student.__dict__[‘eat‘]) 19 20 # 查 21 print(Student.school) # Student.__dict__[‘school‘] 22 print(Student.learn) # Student.__dict__[‘learn‘] 23 print(Student.eat) # Student.__dict__[‘eat‘] 24 25 # 增 26 Student.county = ‘China‘ 27 print(Student.__dict__) 28 print(Student.county) 29 30 # 刪 31 del Student.county 32 33 # 改 34 Student.school = ‘oldboy‘
(2)__init__方法(構造函數)及對象的定義
1 # __init__方法用來為對象定制對象自己獨有的特征 2 class Student: 3 school = ‘luffycity‘ 4 5 # 構造函數 6 def __init__(self, name, sex, age): 7 self.Name = name 8 self.Sex = sex 9 self.Age = age 10 11 def learn(self): 12 print(‘is learning‘) 13 14 def eat(self): 15 print(‘is sleeping‘) 16 17 18 # 定義對象 19 stu1 = Student(‘王二丫‘, ‘女‘, 18) # Student.__init__(stu1,‘王二丫‘,‘女‘,18) 20 21 # __init__方法後實例化的步驟: 22 # 1、先產生一個空對象stu1 23 # 2、Student.__init__(stu1,‘王二丫‘,‘女‘,18) 24 25 # 對象的操作: 26 # 查 27 print(stu1.__dict__) 28 29 # 改 30 stu1.Name = ‘李二丫‘ 31 print(stu1.__dict__) 32 33 34 # 刪除 35 del stu1.Name 36 print(stu1.__dict__) 37 38 # 增 39 stu1.class_name = ‘python開發‘ 40 print(stu1.__dict__)
2.屬性查找與綁定方法
3.python中一切都是對象
4.面向對象可拓展性總結與練習
三、面向對象進階
python高階6 面向對象重新梳理