python 面向對象的三大特性之一: 多態


一. 多態
python面向對象的三大特征之一: 繼承,封裝,多態
多態: python處處是多態(所有的對象都是object的子類的對象)
python : 弱類性語言 ,沒有多態這個概念,處處是多態
python 不管什么類型,傳入函數, 封裝到對象中都可以

python 沒有多態? 他有什么? 他有鴨子類型.
鴨子類型: 看着像鴨子,他就是鴨子.
二. 抽象類, 接口類(補充)   from abc import ABCMeta, abstractmethod # (模塊)   class Payment(metaclass=ABCMeta): # 抽象類(接口類)   @abstractmethod # 規范下面這個方法 (要加規范,必須要有@abstractmethod)     def pay(self): # 制定了一個規范    pass




1. 在python中處處是多態
# 這些類里都有一些相同的方法,這些類 , 都互稱為鴨子類型
class Str:
    def index(self):
        pass

class List:
    def index(self):
        pass

class Tuple:
    def index(self):
        pass



2. 抽象類, 接口類
from abc import ABCMeta, abstractmethod
class Food(metaclass=ABCMeta):  # 抽象類(接口類)
    @abstractmethod     # 規范下面這個方法 (要加規范,必須要有@abstractmethod)
    def collect(self):      # 制定了一個規范
        pass

class Fruits(Food):
    def __init__(self,money):
        self.money = money

    def collect(self):
        print("賣蘋果得了%s" % self.money)

class Meat(Food):
    def __init__(self,money):
        self.money = money

    def collect(self):
        print("賣牛肉得了%s" % self.money)

class Drink(Food):
    def __init__(self,money):
        self.money = money

    def collect(self):
        print("賣冰紅茶得了%s" % self.money)

def collect(obj):
    obj.collect()

f1 = Fruits(200)
m1 = Meat(1000)
d1 = Drink(300)
collect(d1)     # 歸一化設計

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM