# -->
''' 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. svn 的权限配置

    #分配用户所属组 g_admin=admin g_ui=zhangsan,lisi g_code=wangwu g_test=zhaoliu,qianqi #分配目录权限 #表示项目根目录 [/] @ ...

  2. json处理+list.sort()排序

    #coding:utf-8 """ json是一种轻量级数据交换格式,可以对复杂数据进行表达和存储 规格: 1.数据保存在键值对里 2.键值对之间由逗号分隔 3.花括号用 ...

  3. 数模美赛准备——我的第一个LaTex文档

    软件下载地址:清华大学镜像网站(点击下载) https://mirrors.tuna.tsinghua.edu.cn/ctex/legacy/2.9/ 上述网站页面 根据个人需求下载不同的版本安装完成 ...

  4. sqlserver isnull函数

    isnull(参数1,参数2),判断参数1是否为NULL,如果是,返回参数2,否则返回参数1. select ISNULL(null,'helloword') 返回helloword字符串select ...

  5. PAT 1152 Google Recruitment

    1152 Google Recruitment (20 分)   In July 2004, Google posted on a giant billboard along Highway 101 ...

  6. WCF服务无法访问DateTime类型的解决方法

    在WCF服务中,如果entity类含有DateTime类型的字段,那么接口将会被执行两次,从而出现无法访问的情况.如下图所示: 原因是WCF中DateTime无法转换成序列化JSON字符串,DateT ...

  7. 在.net core web项目中生成二维码

    1.添加QRCoder包引用 2. public IActionResult MakeQrCode()        { string url="https://www.baidu.com& ...

  8. Xshell配置使用linux的图形界面

    1.配置Xshell如下图 2.在命令行中执行"gnome-panel". 3.或者使用xstart,配置如下图:

  9. test--2

    $(function () {   if (isLogined && !c_has_follwed) {   $.ajax({   url: "/mvc/Follow/Fol ...

  10. vmstat监控工具

    vmstat监控工具 一.前言 很显然从名字中我们就可以知道vmstat是一个查看虚拟内存(Virtual Memory)使用状况的工具,但是怎样通过vmstat来发现系统中的瓶颈呢?在回答这个问题前 ...