1. 程式人生 > >python高階6 面向對象重新梳理

python高階6 面向對象重新梳理

擴展 知識 面向 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 面向對象重新梳理