7. Python的面向?qū)ο?/h2>
簡(jiǎn)介

根據(jù)操作數(shù)據(jù)的函數(shù)或語句塊來設(shè)計(jì)程序,被稱為面向過程的編程。
把數(shù)據(jù)和功能結(jié)合起來,用稱為對(duì)象的東西包裹起來組織程序的方法稱為面向?qū)ο蟮?/strong>編程。
類和對(duì)象是面向?qū)ο缶幊痰膬蓚€(gè)主要方面。類創(chuàng)建一個(gè)新類型,而對(duì)象是這個(gè)類的實(shí)例 。
屬于一個(gè)對(duì)象或類的變量被稱為域。對(duì)象也可以使用屬于類的函數(shù)來具有功能。這樣的函數(shù)被稱為類的方法。域和方法可以合稱為類的屬性。

類使用class關(guān)鍵字創(chuàng)建。類的域和方法被列在一個(gè)縮進(jìn)塊中。

self

類的方法與普通的函數(shù)只有一個(gè)特別的區(qū)別——它們必須有一個(gè)額外的第一個(gè)參數(shù)名稱,但是在調(diào)用這個(gè)方法的時(shí)候Python會(huì)提供這個(gè)值。這個(gè)特別的變量指對(duì)象本身,名稱是self。

class Person:
    def __init__(self,name):
        self.name = name
        print('my name is ', 'self.name')
    def saySth(self):
        print('hello')
            
p = Person('edwin')
p.saySth()

# 結(jié)果
my name is  edwin
hello

saySth方法沒有任何參數(shù),但仍然在函數(shù)定義時(shí)有self。

__init__方法

在Python的類中有很多方法的名字有特殊的重要意義。__init__方法在類的一個(gè)對(duì)象被建立時(shí),馬上運(yùn)行。這個(gè)方法可以用來對(duì)你的對(duì)象做一些你希望的初始化。注意,這個(gè)名稱的開始和結(jié)尾都是雙下劃線。
上例中,我們沒有調(diào)用init方法,但其輸出中仍有 'name name is'。

區(qū)分類與對(duì)象的變量

類的變量和對(duì)象的變量只在這些類與對(duì)象的前提下有效。

class haveNum:
    num = 0
    def __init__(self,num):
        self.num = num
    
num1 = haveNum(1)
num2 = haveNum(2)

# 結(jié)果
num1.num
Out: 1

num2.num
Out: 2

haveNum.num
Out: 0
繼承

面向?qū)ο蟮木幊處淼闹饕锰幹皇谴a的重用,實(shí)現(xiàn)這種重用的方法之一是通過繼承機(jī)制,通過繼承形成父類子類關(guān)系。

class Person:
    """Represents any school member"""
    def __init__(self,name,age):
        self.name = name
        self.age = age
        print(name,age)
    
    def saySth(self):
        print('person')
    
class Teacher(Person):
    def __init__(self,name,age,salary):
        Person.__init__(self,name,age)
        self.salary = salary
        print(name,age,salary)
        
class Student(Person):
    def __init__(self,name,age,score):
        Person.__init__(self,name,age)
        self.score = score
        print(name,age,score)
        
teacher = Teacher('MR',40,20000)
student = Student('edwin',20,90)

teacher.saySth()
student.saySth()

# 結(jié)果
MR 40
MR 40 20000
edwin 20
edwin 20 90
person
person

Python不會(huì)自動(dòng)調(diào)用基本類的constructor,你得親自專門調(diào)用它。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容