1. 程式人生 > >python類與對象的初識

python類與對象的初識

初識 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類與對象的初識