1. 程式人生 > 其它 >Python基礎之十一(類的方法和特性)

Python基礎之十一(類的方法和特性)

一、類的方法

(1)例項方法(方法也稱函式)

定義:在類裡面,需要對類進行例項化之後才能呼叫的方法,預設傳參例項本身,沒有修飾符

語法:

  def 方法名(self):

    方法體

呼叫:

  在類外部:例項.方法名()

  在類內部:self.方法名()

例子:

class Dog:
    # 例項方法
    def eat(self):
        print('狗狗吃飯')

    # 例項方法
    def sleep(self):
        self.eat()  # 在類內部呼叫eat例項方法
        print('狗狗睡覺')


if __name__
== '__main__': dog = Dog() # 例項化 dog.sleep() dog.eat() # 在類外部例項化後呼叫
View Code

  輸出結果:    

    狗狗吃飯
    狗狗睡覺
    狗狗吃飯 

(2)類方法

定義:在類裡面,無需對類進行例項化便可呼叫的方法,預設傳參類本身,有修飾符@classmethod

語法:

  @classmethod

  def 方法名(cls):

    方法體

呼叫:

  在類外部:類.方法名() 或 例項.方法名()

  在類內部:self.方法名()

例子:

class Dog:
    
# 類方法 @classmethod def eat(cls): print('狗狗吃飯') # 例項方法 def sleep(self): self.eat() # 在類內部呼叫eat類方法 print('狗狗睡覺') if __name__ == '__main__': Dog.eat() # 類呼叫類方法 dog = Dog() dog.eat() # 例項呼叫類方法 dog.sleep()
View Code

  輸出結果:    

    狗狗吃飯
    狗狗吃飯
    狗狗吃飯
    狗狗睡覺

(3)靜態方法

定義:在類裡面,無需對類進行例項化便可呼叫的方法,且無需傳參便可呼叫,有修飾符@staticmethod

語法:

  @staticmethod

  def 方法名():

    方法體

呼叫:

  在類外部:類.方法名() 或 例項.方法名()

  在類內部:self.方法名()

例子:

class Dog:
    # 靜態方法
    @staticmethod
    def eat():
        print('狗狗吃飯')

    # 例項方法
    def sleep(self):
        self.eat()  # 在類內部用例項本身呼叫eat靜態方法
        print('狗狗睡覺')


if __name__ == '__main__':
    Dog.eat()  # 在類外部用類本身呼叫靜態方法
    dog = Dog()
    dog.eat()  # 在類外部用例項呼叫靜態方法
    dog.sleep()
View Code

  輸出結果:

    狗狗吃飯
    狗狗吃飯
    狗狗吃飯
    狗狗睡覺 

注:靜態方法和類方法類似,靜態方法預設無需傳參,類方法預設傳參類本身。   

(4)私有方法

定義:在類裡面,僅類內部可進行呼叫,類外部無法訪問,傳參例項本身,無修飾符

語法:

  def __方法名(): # 注意方法名前面是兩條下劃線

    方法體

呼叫:

  在類內部:self.__方法名()

例子:

class Test:
    def __init__(self, num1, num2):
        self.num1 = num1
        self.num2 = num2

    def __test01(self):
        return self.num1 + self.num2

    def __test02(self):
        return self.num1 * self.num2

    def test03(self):
        print('相加的結果是:', self.__test01())
        print('相乘的結果是:', self.__test02())


if __name__ == '__main__':
    test = Test(3, 5)
View Code

  輸出結果:

    相加的結果是: 8
    相乘的結果是: 15

二、類的特性

(1)封裝

定義:隱藏功能實現的內部細節,對外僅提供介面,傳遞必要的引數即可實現想要的結果,就稱為封裝。例如函式、類等都是封裝的一種,生活中的封裝如取款機、計算器等也是封裝。

(2)繼承

定義:子類繼承父類,子類無需重新定義父類的屬性和方法便擁有了父類的屬性和方法(私有屬性和私有方法除外),這就是繼承。

語法:

  class Father:

    父類屬性和方法

  class Son(Father):

    pass

例子:

class Father:
    money = '100萬'
    __myself = '衣服'

    def drive(self):
        print('我會開車')

    def __fly_a_plane(self):
        print('我會開飛機')


class Son(Father):  # Son類繼承了Father類的money屬性和drive方法,私有屬性__myself和私有方法__fly_a_plane無法繼承
    pass


if __name__ == '__main__':
    son = Son()
    print(f'我有{son.money}')  # 可以訪問父類的money屬性
    son.drive()  # 可以呼叫父類的drive方法
View Code

  輸出:

    我有100萬
    我會開車

(3)多型【瞭解,在Python中多型不嚴謹】