多型與鴨子型別 perperty

2022-09-20 03:03:11 字數 3790 閱讀 8514

'''

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 統一...