十一、Python之物件導向

來源:互聯網
上載者:User

標籤:不同   報錯   sub   teacher   狀態   方法   acl   markdown   div   

1.概念

1)面向過程與物件導向    面向過程,核心是過程二字,過程即解決問題的步驟,就是先幹什麼再幹什麼    基於該思想寫程式好比在設計一條流水線,是一種機械式的思維方式    優點:複雜的過程流程化,進而簡單化    缺點:擴充性差    物件導向,核心是對象二字,對象是特徵與技能的結合體    基於該思想寫程式就好比在創造世界,世界是由一個個對象組成,是一種’上帝式‘ 的思維方式    優點: 可擴充性強     缺點: 編程複雜高,容易出現過度設計2) 類    對象是特徵與技能的結合體,類就是一系列對象相似的特徵與技能的結合體    在現實世界中:一定是先有一個個具體存在的對象,後總結出的類    在程式中: 一定保證先定義類,後產生對象3) 執行個體化    調用類的過程又稱為執行個體化

2.類(Class)程式執行個體

1)定義一個Student類

class Student:    school = ‘oldboy‘    def learn(self):        print(‘is learning‘)    def choose_course(self):        print(‘choose course‘)    print(‘======run‘)#函數只有在調用時才能運行,而類體代碼在類定義時就能執行print(Student.__dict__)#查看屬性print(Student.school)   #類的資料屬性print(Student.learn)    #類的函數屬性#增加屬性Student.country = ‘china‘print(Student.country)#修改屬性Student.school = ‘Oldboy‘print(Student.school)#刪除屬性del Student.country#print(Student.country)  #刪除後就訪問不到,則會報錯Student.learn(‘AAAA‘)   #必須傳值,才能執行

2)定義一個Teacher類

class Teacher:    school = ‘oldboy‘    count = 0    def __init__(self,name,sex,age,level,salary):        self.name = name        self.sex = sex        self.age = age        self.level = level        self.salary = salary        Teacher.count+=1    def teach(self):        print(‘%s is teaching‘ %self.name)t1 = Teacher(‘張三‘,‘male‘,18,10,3000)t2 = Teacher(‘李四‘,‘male‘,38,9,30000)t3 = Teacher(‘王五‘,‘male‘,29,9,30000)#通過調用執行個體下的name列印老師名字print(t1.name)  #張三print(t2.name)  #李四print(t3.name)  #王五#調用任何一個執行個體,count都是老師的總個數print(t1.count) #3print(t2.count) #3print(t3.count) #3

3.類的繼承與派生

在Python2中類分為2種:    1.經典類    2.新式類:指的是繼承object類的類,以及該類的子類在Python3中只有新式類,預設會繼承object類的類,以及該類的子類=================================================Python2                                 Python3class Parten1(object)         等同於 class Partent1()=================================================
class Parent2:    passclass Sub1(Parent1):    passclass Sub2(Parent1,Parent2):    pass#Sbu1 繼承了Parent1print(Sub1.__bases__)#Sub2 繼承了Paren1 Parent2print(Sub2.__bases__)#預設會有繼承 objectprint(Parent1.__bases__)    #(<class ‘object‘>,)print(Parent2.__bases__)    #(<class ‘object‘>,)

4.多態與多態性

多態:同一種事物的多種形態,對於動物來說,動物都能叫,但是可能內容不同,即呈現出來的狀態不同import abcclass Animal(metaclass=abc.ABCMeta):    @abc.abstractclassmethod    def speak(self):        passclass Pig(Animal):    def speak(self):        print(‘哼哼‘)class Dog(Animal):    def speak(self):        print(‘汪汪‘)dog=Dog()pig=Pig()#dog、pig都是動物,只要是動物肯定有talk方法,於是我們可以不用考慮它們具體是什麼類型,而直接使用    dog.talk()    pig.talk()#更進一步,我們可以定義一個統一的介面來使用def func(obj):    obj.talk()

十一、Python之物件導向

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.