python類與對象的初識
阿新 • • 發佈:2018-08-23
初識 for 思想 dict return bject div ppi gis
類
什麽是對象?之前我們求一個字符串的長度,通過for循環或者while循環求解,隨著課程的深入,我們可以通過調用函數來實現,用具體代碼來實現如下:
1 # 使用for循環 2 s1 = ‘cfhgjrfekdcmfvjrgte‘ 3 count = 0 4 for i in s1: 5 count += 1 6 print(count)
1 # 使用函數實現: 2 def mylen(argv): 3 count = 0 4 for i in argv: 5 count += 1 6 return count 7 s1 = ‘cfhgjrfekdcmfvjrgte‘ 8 9 print(mylen(s1))
接下來我們看一個例子:
1 class A: 2 name = ‘colin‘ 3 def func1(self): 4 pass
這種含有class定義的我們稱為類。從結構上理解,上面可分為兩部分:
1 如:name = ‘colin‘ 這部分稱為:靜態屬性,靜態變量,也可以稱為靜態方法
2 如:def 定義的函數,我們稱為動態屬性,也可以稱為方法。
那函數與面向對象有什麽不同呢?先舉下面兩個例子:
購物車系統,為了實現註冊,登陸與購物不同功能時,使用函數:
def register(argv):pass def login(argv): pass def shoppingcar(argv): pass
使用面向對象,將各個函數功能放進一個類中:
class Shopping_Car: def __init__(self): # 特殊方法 pass def register(self): pass def login(self): pass def shoppingcar(self): pass
通過上面的對比可以看出:
1 函數封裝的是一個功能,而面向對象封裝的是多個相關的功能
2 面向對象抽象,它是一種思想
3.面向對象的程序可擴展,對象都是一個個獨立的。它具有耦合性和差異性
我們定義了一個類,如何去查看類中的所有屬性以及方法?
1 這裏就提供一個方法__dict__
class Person: animal = ‘高級動物‘ walk_style = ‘直立行走‘ language = ‘語言‘ def eat(self): print(‘該吃吃,該喝喝,啥事別忘心裏擱‘) def work(self): print(‘人類都需要工作。。。‘) print(Person.__dict__) print(Person.__dict__[‘name‘]) # 報錯 通過__dict__方式 單獨的屬性及方法可以查,但是不能增刪改 Person.__dict__[‘animal‘] = ‘低級動物‘ # 報錯 TypeError: ‘mappingproxy‘ object does not support item assignment Person.__dict__[‘name‘] = ‘alex‘ # 報錯,不能增加
所以,從上面的例子可以看出,一般用__dict__查看類中的所有屬性及方法,不能進行其他操作。
2 第二種查看方法,使用‘.‘,該點的使用,在某些情況下可以實現類的增刪改。
print(Person.animal) # 查 高級動物 Person.name = ‘colin‘ # 增 colin print(Person.name) Person.animal = ‘低級動物‘ # 改 低級動物 print(Person.animal) del Person.walk_style # 刪 print(Person.__dict__)
3 操作方法:一般不通過類名操作,因此,需引入對象。
對象
什麽是對象?先引入下面的例子:
class Person: animal = ‘高級動物‘ walk_way = ‘直立行走‘ language = ‘語言‘ def __init__(self,name,age,eye): # 功能:給對象封裝屬性的。 self.name = name self.age = age self.eye = eye def eat(self): # print(self) print(‘該吃吃,該喝喝,啥事別忘心裏擱‘) def work(self): print(‘人類都需要工作。。。‘) obj = Person(‘colin‘,27,‘小眼睛‘) # 這個過程是一個實例化過程,他會實例化一個對象(他會在內存實例化一個對象空間)。 print(obj) print(obj.name)
實例化過程內部進行了三個階段:
1,在內存中開辟了一個對象空間
2,自動執行類中的__init__方法,並且將對象空間自動傳給self參數,其他參數手動傳入。
3, 執行__init__方法 給對象空間封裝相應的屬性。
對象操作是指對對象空間操作,同與類操作相同,由增刪改查操作。
對象查看對象空間所有的屬性使用:__dict__
print(obj.__dict__)
對象操作對象空間的某個屬性,通過‘.‘來實現增改查功能。
obj.sex = ‘男‘ # 增 del obj.eye1 # 刪 obj.eye = ‘大一點‘ # 改 print(obj.name1) print(obj.__dict__)
對象操作類空間的屬性 只能查。
print(obj.animal) obj.animal = ‘低級動物‘ print(obj.animal) print(obj.__dict__) print(Person.__dict__)
對象操作類空間的方法
obj.eat()
python類與對象的初識