'''1. 什麼是多型
多型指的是同一種/類事物的不同形態
2. 為何要用多型
多型性:在多型的背景下,可以在不用考慮物件具體型別的前提下而直接使用物件
多型性的精髓:統一
3. 如何用多型
''''''
class animal:
def speak(self):
pass
class people(animal):
def shuo(self):
print('say hello')
class dog(animal):
def jiao(self):
print('汪汪汪')
class pig(animal):
def chang(self):
print('哼哼哼')
obj1=people()
obj2=dog()
obj3=pig()
# obj1.speak()
# obj2.speak()
# obj3.speak()
def speak(animal):
animal.speak()
speak(obj1)
speak(obj2)
speak(obj3)
s1='hello'
l1=[1,2,3]
t1=(1,2)
# changdu(s1)
# size(l1)
# kuangdu(t1)
print(len(s1)) #s1.__len__()
print(len(l1)) #l1.__len__()
print(len(t1)) #t1.__len__()
'''import abc
class animal(metaclass=abc.abcmeta):
@abc.abstractmethod
def speak(self):
pass
@abc.abstractmethod
def run(self):
pass
# animal() # 父類只是用來建立規範的,不能用來例項化的,更無需實現內部的方法
class people(animal):
def speak(self):
print('say hello')
def run(self):
pass
class dog(animal):
def speak(self):
print('汪汪汪')
def run(self):
pass
class pig(animal):
def speak(self):
print('哼哼哼')
def run(self):
pass
obj1=people()
obj2=dog()
obj3=pig()
# python崇尚鴨子型別
class disk:
def read(self):
print('disk read')
def write(self):
print('disk write')
class memory:
def read(self):
print('mem read')
def write(self):
print('mem write')
class cpu:
def read(self):
print('cpu read')
def write(self):
print('cpu write')
obj1=disk()
obj2=memory()
obj3=cpu()
obj1.read()
obj2.read()
obj3.read()
# property裝飾器是用來將類內的函式屬性偽裝成資料屬性# class people:
# def __init__(self,name,weight,height):
# self.name=name
# self.weight=weight
# self.height=height
## @property
# def bmi(self):
# return self.weight / (self.height ** 2)
## obj=people('egon',80,1.83)
# obj.height=1.85
# obj.weight=75
# print(obj.bmi())
# print(obj.bmi)
# 了解....
class people:
def __init__(self,name):
self.__name=name
@property
def name(self):
return '《名字:%s>' %self.__name
@name.setter
def name(self,obj):
if type(obj) is not str:
print('name必須為str型別')
return
self.__name=obj
@name.deleter
def name(self):
# print('不讓刪')
del self.__name
@name.getter
obj=people('egon')
# print(obj.name)
# obj.name='egon'
# obj.name=123
# print(obj.name)
del obj.name
print(obj.__dict__)
# class people:
# def __init__(self,name):
# self.__name=name
## def get_name(self):
# return '《名字:%s>' %self.__name
## def set_name(self,obj):
# if type(obj) is not str:
# print('name必須為str型別')
# return
# self.__name=obj
## def del_name(self):
# # print('不讓刪')
# del self.__name
## name=property(get_name,set_name,del_name)
## obj=people('egon')
## # print(obj.name)
# # obj.name='egon'
# # obj.name=123
# # print(obj.name)
## del obj.name
# print(obj.__dict__)
Python多型 鴨子型別
多型指的是一類事物有多種形態。動物有多種形態 人,狗,豬 import abcclass animal metaclass abc.abcmeta 同一類事物 動物 abc.abstractmethod deftalk self pass class people animal 動物的形態之一 人 ...
多型性與鴨子型別
多型指的是一類事物有多種形態,比如動物有多種形態 貓 狗 豬 class animal 同一類事物 動物 deftalk self pass class cat animal 動物的形態之一 貓 deftalk self print 喵喵喵 class dog animal 動物的形態之二 狗 de...
多型性與鴨子型別
class animal pass class people animal pass class dog animal pass class pig animal pass為何要有多型 多型會帶來什麼樣的特性 多型性指的是可以在不考慮物件具體型別的情況下而直接使用物件 class animal 統一...