# -->
''' 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. java中JScrollPane不显示水平滚动条的解决办法

    在JPanel中添加了表格,表格中对东西太多,需要水平滚动条滑动才能够完全找到所有数据,如果没有水平滚动条的话,数据堆积在一起,无法分开 做法是: 第一步:先将表格自动调整的状态给关闭掉:table. ...

  2. spring reference

    Spring框架概述 Spring可以轻松创建Java企业应用程序.它提供了在企业环境中使用Java语言所需的一切,支持Groovy和Kotlin作为JVM上的替代语言,并可根据应用程序的需要灵活地创 ...

  3. C#实现数字字符串左补齐0的方法

    如下: ; , '); //0003 (推荐) s = string.Format("{0:d4}", n); //0003 再如: ; 方法1:Console.WriteLine ...

  4. redmine

    redmine直接复制图片 https://github.com/thorin/redmine_image_clipboard_paste

  5. [luogu P2633] Count on a tree

    [luogu P2633] Count on a tree 题目描述 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点 ...

  6. ceph使用对象网关

    1.   介绍 三种验证客户端的方式选一种就行了 2.    安装 2.1 创建对象存储网关系统 步骤1:安装文档安装ceph 步骤2:初始化缓存网关 [root@node1 my-cluster]# ...

  7. Emacs中的代码折叠控制

    之前在别的编辑器里用到代码折叠的功能很好用. 对 Emacs 不够熟悉,作为一只坚强的懒癌晚期患者,一直没开启这个功能,使用石器时代的标记法来记录每个结构的起止位置,效率可想而知. 今天可算是找着它啦 ...

  8. week2

    三元函数: a,b,c = 1,2,3 d = a if a>b else c print(d) #list 用法: lst = [1,2,3,4,5] print(lst[0:3]) prin ...

  9. C# DotNetBar ribboncontrol子窗体的系统控件(最大最小关闭)在父窗体中多余显示

    初始效果: 重复的子窗体按钮,看着别扭,修改MdiSystemItemVisible = False;后效果: MdiSystemItemVisible的系统解释为: 为了解决这个问题,浪费了好几天. ...

  10. 六、Linux的用户和组

    1. 用户的管理 useradd 添加一个用户 useradd test 添加test用户 useradd test -d /home/t1  指定用户home目录 或者直接  adduser tes ...