# -->
''' class interface 接口:
建立关联的桥梁,
方便管理代码
(python中没有接口语法) 接口类:
用来定义功能的类
为继承它的子类提供功能
该类的功能法方法一般不需要有实现体
实现体有继承它的子类实现 print(len('123'))
# 面向过程
# 知道操作的功能,但不明确操作的具体对象 print('123'.__len__())
# 面向对象
# 清晰知道操作对象,但不明确具体的操作方法 '''
# -- ( 抽象接口 ) -------------------------------------------------------------------------------------------
# -- ( 案例说明 ) # class 宠物接口:
# def 关怀主人(self):pass # class 看门接口:
# def 看门(self): pass # class 狗(宠物接口,看门接口):
# 类狗拥有(宠物,看门)的父类,也就可以拥有(关怀主人,看门)的方法 # def 叫(self):pass 叫的功能
# def 吃(self):pass 吃的功能
# def 睡(self):pass 睡的功能 # class 猫(宠物接口,看门接口):猫同上
# def 叫(self):pass
# def 吃(self):pass
# def 睡(self):pass # -- ( 抽象 ) ------------------------------------------------------------------------------------------- # -- ( 抽象父类:拥有抽象方法 ( 子类共有的方法,但是父类不能有具体的实现体 ) 的父类 )
# -- ( 抽象方法:方法名是具体的,但是实现体是抽象的,在子类中重新具象化 )
# -- ( python 中借助abc来实现抽象父类 import abc ) # -- ( 实现抽象语法 ) -------------------------------------------------------------------------------------------
# -- ( 抽象基类 模块:abstract(抽象) base(基础) class(类型) ) ------------------------------------------------------------------------------------------- # import abc
# class ClsName(metaclass=abc.ABCMeta):
# @abc.abstractmethod # -- ( 案例 ) -------------------------------------------------------------------------------------------
# -- ( 元类:meta class ) ------------------------------------------------------------------------------------------- import abc
class Canine(metaclass=abc.ABCMeta): # 犬科 # 抽取 狗和狼 的共性到父类 犬科
def __init__(self, name):
self.name = name def run(self):
print(self.name + 'running')
def eat(self):
print(self.name + 'eating')
def sleep(self):
print(self.name + 'sleeping') # 抽象父类中的抽象方法,继承它的子类中 必须 有自己的实现体
@abc.abstractmethod # 子类必须重写此方法
def howl(self):
# print(self.name)
pass class Dog(Canine): def watchdoor(self):
print('wtachdoor')
def howl(self):
print('Howwwwwwwwwwwww') class Wolf(Canine): def hunter(self):
print('wtachdoor')
def howl(self):
print('oooooooooooooo')

抽象鸡类 abstract(抽象) base(基础) class(类型)的更多相关文章

  1. python 用abc模块构建抽象基类Abstract Base Classes

    见代码: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/08/01 16:58 from abc import ABCMet ...

  2. guxh的python笔记七:抽象基类

    1,鸭子类型和白鹅类型 1.1,白鹅类型 白鹅类型对接口有明确定义,比如不可变序列(Sequence),需要实现__contains__,__iter__,__len__,__getitem__,__ ...

  3. Python抽象基类:ABC谢谢你,因为有你,温暖了四季!

    Python抽象基类:ABC谢谢你,因为有你,温暖了四季! Python抽象基类:ABC谢谢你,因为有你,温暖了四季! 实例方法.类方法和静态方法 抽象类 具名元组 参考资料 最近阅读了<Pyt ...

  4. 流畅python学习笔记:第十一章:抽象基类

    __getitem__实现可迭代对象.要将一个对象变成一个可迭代的对象,通常都要实现__iter__.但是如果没有__iter__的话,实现了__getitem__也可以实现迭代.我们还是用第一章扑克 ...

  5. 4.6 C++抽象基类和纯虚成员函数

    参考:http://www.weixueyuan.net/view/6376.html 总结: 在C++中,可以通过抽象基类来实现公共接口 纯虚成员函数没有函数体,只有函数声明,在纯虚函数声明结尾加上 ...

  6. 【Python】【元编程】【从协议到抽象基类】

    """class Vector2d: typecode = 'd' def __init__(self,x,y): self.__x = float(x) self.__ ...

  7. OOP2(虚函数/抽象基类/访问控制与继承)

    通常情况下,如果我们不适用某个函数,则无需为该函数提供定义.但我们必须为每个虚函数都提供定义而不管它是否被用到了,这因为连编译器也无法确定到底会适用哪个虚函数 对虚函数的调用可能在运行时才被解析: 当 ...

  8. 流畅的python学习笔记:第十一章:抽象基类

    __getitem__实现可迭代对象.要将一个对象变成一个可迭代的对象,通常都要实现__iter__.但是如果没有__iter__的话,实现了__getitem__也可以实现迭代.我们还是用第一章扑克 ...

  9. Djiango-建立模型抽象基类

    创建一个抽象模型基类 ‘ 然后 ’base_model.py from django.db import models from datetime import date class BaseMode ...

随机推荐

  1. background-size cover和contain的用法详解

    我们还可以通过background-size来控制背景图片的尺寸. background-size有几个属性值,常用的是cover和contain.那么background-size:cover和co ...

  2. linux bash array list

    #定义array ptpArray=()while read linedo #将文件读取内容放到array中,注意作为字符串放,否则空格会被分隔成行ptpArray+=("$line&quo ...

  3. Django全文检索(django-haystack+whoosh+jieba)

    前言: 全文检索就是针对所有内容进行动态匹配搜索的概念,针对特定的关键词建立索引并精确匹配达到性能优化的目的 class Whoose_seach(object): analyzer = Chines ...

  4. 浅谈C++的智能指针

    我们使用智能指针来自动运行管理内存,避免对原始指针的使用不当而造成内存泄漏. ------------------------------------------------------------- ...

  5. lumion实例渲染6.2

    放置一些树 打开室外材质库,选择一个·别墅 放车 “景观”“描绘系统”笔刷调大刷出地面, 人群安置一些墙 改变方向,增大数量,墙就连在一起, 放一些树篱在墙上. 拍照模式添加特效,太阳 添加特效,天气 ...

  6. sqlserverdatasouce控件如何让添加删除修改自动化

    对于sqlserverdatasouce控件,添加插入修改和删除命令,可以自动删除修改更新数据,不需要编写一行代码,但是有时更新失败,原因在于选中了[开放式并发],这个选中,如果该表与其他的数据表关联 ...

  7. Exception: 'dlib.mmod_rectangle' object has no attribute 'right' - 例外:'dlib.mmod_rectangle'对象没有属性'right'

    I'm using dlib for face detection and getting this error Exception: 'dlib.mmod_rectangle' object has ...

  8. 【tomcat环境搭建】Linux和Windows下tomcat开机自启动设置

    目前很多项目都部署在tomcat上,频繁操作中,每次启动或关闭tomcat都稍显麻烦,那如何设置tomcat的开机自启动? Linux下tomcat的开机自启动设置 网上主要有两种方式,一种是shel ...

  9. 小白的首个maven web项目Step1软件安装三(8.0.15mysql及workbench安装)

    直接先开始下 MySQL 和 Workbench(mysql的可视化工具) ,注意下得是镜像版 .msi 后缀的 (mysql是纯控制面板的呈现方式,想要界面化操作可以装可视化工具,这里我装的是wor ...

  10. Django框架教程之正则表达式URL误区详解

    问题:我学习的视频大概是2015年录的,里面用的Django版本比较老关于正则表达式URL这一块都是用的url(“url(r'^admin/', admin.site.urls),”)方法.而我自己练 ...