python定义abc_Python中abc

import abc

指定metaclass属性将类设置为抽象类,抽象类本身只是用来约束子类的,不能被实例化

class Animal(metaclass=abc.ABCMeta): # 统一所有子类的方法

@abc.abstractmethod # 该装饰器限制子类必须定义有一个名为talk的方法

def say(self):

print(‘动物基本的发声...‘, end=‘‘)

class People(Animal): # 但凡继承Animal的子类都必须遵循Animal规定的标准

pass

class Dog(Animal):

pass

class Pig(Animal):

pass

obj1 = People()

obj2 = Dog()

obj3 = Pig()

obj1.say() # 动物基本的发声...卧槽

obj2.say() # 动物基本的发声...汪汪汪

obj3.say() # 动物基本的发声...吼吼吼

# 若子类中没有一个名为talk的方法则会抛出异常TypeError,无法实例化

# TypeError: Can‘t instantiate abstract class People with abstract methods say

class Animal(metaclass=abc.ABCMeta): # 统一所有子类的方法

@abc.abstractmethod

def say(self):

print(‘动物基本的发声...‘, end=‘‘)

class People(Animal):

def say(self):

super().say()

print(‘卧槽‘)

class Dog(Animal):

def say(self):

super().say()

print(‘汪汪汪‘)

class Pig(Animal):

def say(self):

super().say()

print(‘吼吼吼‘)

obj1 = People()

obj2 = Dog()

obj3 = Pig()

obj1.say() # 动物基本的发声...卧槽

obj2.say() # 动物基本的发声...汪汪汪

obj3.say() # 动物基本的发声...吼吼吼

补充说明

Python语言特性 - 鸭子类型

“当一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子”

原文:https://www.cnblogs.com/linqiaobao/p/13285731.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值