1. 程式人生 > >python學習 day18

python學習 day18

面向物件初識

### 面向過程:

# 例1:
s1 = '字元zifu' count = 0 for i in s1: count += 1 # 例2: l1 = [1, 2, 3, 4] count = 0 for j in l1: count += 1

### 函式

def func(s):
    count = 0
    for i in s:
        count += 1
    return count

### 函式

 1 # auth:
 2  def login():
 3      pass
 4  def regisgter():
5 pass 6 7 # account: 8 def func1(): 9 pass 10 def func2(): 11 pass 12 13 # shoppingcar: 14 def shopping(username,money): 15 pass 16 def check_paidgoods(username,money): 17 pass 18 def check_unpaidgoods(username,money): 19 pass 20 def save(username,money): 21 pass

### 面向物件:面向物件是一類相似功能函式的集合體。

 1,第一個優點: 更清晰化,更規範化。

 2,面向物件,必須要站在上帝的角度,去考慮問題。類,其實就是一個公共模板;物件,就從具體的模板例項化出來。

# auto
class LoginHandler:
    def login(self):
        pass
    def regisgter(self):
        pass

# account
class Account:
    def func1(self):
        pass
    def func2(self):
        
pass # 購物車 class ShoppingCar: def shopping(username,money): pass def check_paidgoods(username,money): pass def check_unpaidgoods(username,money): pass def save(username,money): pass
# 面向物件的結構

'''
class 類名():
    
    變數
    
    函式(方法) 
'''

例:
class Human:
    """
    此類主要是構建人類
    """
    mind = '會思想'    # 靜態屬性 屬性 靜態變數 靜態欄位
    language = '使用文字'
    # dic = {}
    # l1 = []
def __init__(self,name,sex,age,hobby):    # 方法 函式 動態屬性 # print(self,name,sex,age,hobby) # print(666) self.n = name self.s = sex self.a = age self.h = hobby def work(self): print(self) print('人類會工作') def tools(self): # self.color = 'blue' print('人類都會使用工具')

### 類名

1)類名操作類中的靜態屬性

第一種:# 查,“   類名.__dict__ ”(Human.__dict__)檢視類中所有內容時使用。

print(Human.__dict__)              # 檢視類中所有內容
'''
 {'__module__': '__main__', '__doc__': '\n    此類主要是構建人類\n    ', 'mind': '有思想', 'language': '實用語言',
'__init__': <function Human.__init__ at 0x0000024F6ABCD9D8>, 'work': <function Human.work at 0x0000024F6ABCDA60>,
'tools': <function Human.tools at 0x0000024F6ABCDAE8>, '__dict__': <attribute '__dict__' of 'Human' objects>,
'__weakref__': <attribute '__weakref__' of 'Human' objects>}
''' print(Human.__dict__['mind']) # 檢視 靜態變數 mind 中的內容 # 有思想 Human.__dict__['mind'] = '無腦' # 無法對類中內容進行更改,否則報錯 print(Human.__dict__)

第二種:萬能的 “  .  ” 可以增刪改查類中的靜態屬性。

Human.walk = '直立行走'   ### 增    # 增加了 walk=‘直立行走’ 的屬性
print(Human.walk)

del Human.mind  ### 刪    # 將 mind = ‘有思想’ 屬性刪除
Human.mind = '思維zhang' ### print(Human.mind) # mind = ‘有思想’ 改為了 mind = ‘思維zhang’ print(Human.mind) ### 查 # mind = ‘思維zhang’

2)類名操作類中的方法(除去特殊方法:靜態方法,類方法之外,一般不會通過類名執行類中的方法)。

方法: “  類名.方法名(引數)  ”  <--->  Human.work(1231)

Human.work(1231)
# 1222
# 人類會工作

Human.tools(111)    
# 人類都會使用工具

### 物件

----   “  類名()”  這是一個例項化過程,就會產生一個物件。

例:obj = Human()  產生了一個例項化物件 obj 

obj = Human        # 例項化一個過程

例項化一個物件需要經歷的3件事情(即 例項化一個物件的過程):

1)產生一個空的物件空間。

print(obj)  # <__main__.Human object at 0x0000019BC6A0F828>

2)自動執行類中的 __init__ 方法並且將這個空的物件空間傳給 self 。

print(obj)  

3)在 __init__ 中通過self給這個空間新增屬性。

obj = Human('小胖', '', 20, '')
print(obj.__dict__)        # {'n': '小胖', 's': '男', 'a': 20, 'h': '女'}

# 物件  操作  物件空間  的屬性

obj = Human('小胖','',20,'')        # 例項化物件

 

1)" obj.__dict__  " 查詢物件中所有的屬性

print(obj.__dict__)        # {'n': '小胖', 's': '男', 'a': 20, 'h': '女'}

2)通過萬能的  " . "  的方式操作物件中的單個屬性。

obj.job = 'IT'      #

del obj.n      #

obj.s = ''     #
print(obj.s)

print(obj.__dict__)    #

3)物件可以查詢類中的屬性。

print(obj.mind)  # 查詢 mind = “會思想”
print(obj.language)  # 查詢 language = “使用語言”
print(obj.a)    # 查詢  a = 20
obj.a
= 666 print(obj.a)  # 改 a = 666

4)物件可以執行類中的方法。

       物件執行類中的所有方法(除去3個特殊方法)Python直譯器都會將物件空間主動傳給方法的第一個引數self。

print(obj)        
# <__main__.Human object at 0x00000284476FBCF8>

obj.work()
# <__main__.Human object at 0x00000284476FBCF8>
# 人類會工作

 self:類中方法的第一個形參 約定俗成 寫  self  便於統一,self 接受的就是 物件空間。

 1 class Human:
 2     """
 3     此類主要是構建人類
 4     """
 5     mind = '會思想'  # 靜態屬性 屬性 靜態變數 靜態欄位
 6     language = '使用文字'
 7     # dic = {}
 8     # l1 = []
 9     def __init__(self,name,sex,age,hobby):  # 方法 函式 動態屬性
10         # print(self,name,sex,age,hobby)
11         # print(666)
12         self.n = name
13         self.s = sex
14         self.a = age
15         self.h = hobby
16 
17     def work(self):
18         print(self)
19         print('人類會工作')
20 
21     def tools(self):
22         # self.color = 'blue'
23         print('人類會使用工具')
24         print('猩猩會使用工具')
25         print('猴子會使用工具')
obj = Human('小胖', '', 20, '')
print(obj.__dict__)  # {'n': '小胖', 's': '男', 'a': 20, 'h': '女'}

obj.tools()
# 人類會使用工具
# 猩猩會使用工具
# 猴子會使用工具
print(obj.__dict__)  # {'n': '小胖', 's': '男', 'a': 20, 'h': '女'}
self = [1,2,3]
self.append(666)
obj = self
print(obj, self) # [1, 2, 3, 666] [1, 2, 3, 666]

self.append(777)
obj.append(888)
print(obj, self)    # [1, 2, 3, 666, 777, 888] [1, 2, 3, 666, 777, 888]

# 多個物件

# 多個物件
# xiaopang = Human('小胖','男',20,'美女')
# xiangye = Human('相爺','男',18,'肥女')
# print(xiangye,xiaopang)
# print(xiaopang.__dict__)
# print(xiangye.__dict__)

 

# 例1: