from abc import ABCMeta, abstractmethod

# 定义一个抽象类
class Person(metaclass=ABCMeta):
name = "泰山"
@classmethod # 类方法
def walking(cls):
print("{}在走路".format(cls.name)) @abstractmethod # 抽象方法
def drinking(self):
pass @staticmethod # 静态方法
def sleeping(name):
print("{}在睡觉".format(name)) class Student(Person):
# 抽象方法
def drinking(self):
print("{}在喝水".format(self.name)) # 实例方法
def studying(self):
print("好好学习天天向上") if __name__ == '__main__':
s = Student()
#实例化的对象可以调用类方法装饰器装饰的函数
s.walking() # 实例化的对象调用抽象方法(子类要实现用装饰器装饰的抽象方法)
s.drinking() #实例化的对象调用实例方法
s.studying() #类不能调用实例方法
Student.studying()
#要想类也能调用实例方法或抽象方法,需要将实例对象传入即可
Student.studying(s)
Student.drinking(s) # 类可以调用类方法装饰器装饰的函数
Student.walking() # 实例化的对象和类可以调用静态方法装饰器装饰的函数
s.sleeping(s.name)
Student.sleeping(Student.name)

@staticmethod/@classmethod/实例方法/@abstractmethod的更多相关文章

  1. instancemethod, staticmethod, classmethod & abstractmethod

    实例方法.静态方法.类方法.抽象方法 1.  Python中方法的工作方式(How methods work in Python) A method is a function that is sto ...

  2. Python staticmethod classmethod 普通方法 类变量 实例变量 cls self 概念与区别

    类变量 1.需要在一个类的各个对象间交互,即需要一个数据对象为整个类而非某个对象服务. 2.同时又力求不破坏类的封装性,即要求此成员隐藏在类的内部,对外不可见. 3.有独立的存储区,属于整个类.   ...

  3. python staticmethod classmethod

    http://www.cnblogs.com/chenzehe/archive/2010/09/01/1814639.html classmethod:类方法staticmethod:静态方法 在py ...

  4. Python中的 @staticmethod@classmethod方法

    python类中有三种方法,常见的是实例方法,另外两种是staticmethod装饰的静态方法,和classmethod装饰的类方法. 1.对比 流畅的python里,用一个例子进行了对比: (1)两 ...

  5. python staticmethod,classmethod方法的使用和区别以及property装饰器的作用

    class Kls(object): def __init__(self, data): self.data = data def printd(self): print(self.data) @st ...

  6. python 类中staticmethod,classmethod,普通方法

    1.staticmethod:静态方法和全局函数类似,但是通过类和对象调用. 2.classmethod:类方法和类相关的方法,第一个参数是class对象(不是实例对象).在python中class也 ...

  7. python中staticmethod classmethod及普通函数的区别

    staticmethod 基本上和一个全局函数差不多,只不过可以通过类或类的实例对象 (python里光说对象总是容易产生混淆, 因为什么都是对象,包括类,而实际上 类实例对象才是对应静态语言中所谓对 ...

  8. python之内置装饰器(property/staticmethod/classmethod)

    python内置了property.staticmethod.classmethod三个装饰器,有时候我们也会用到,这里简单说明下 1.property 作用:顾名思义把函数装饰成属性 一般我们调用类 ...

  9. staticmethod classmethod

    1. 静态方法 @staticmethod 只是名义上归类管,实际上静态方法里访问不了类或者实例中的任何属性 2. 类方法 @classmethod 只能访问类变量,不能访问实例变量 3.属性方法 @ ...

  10. staticmethod classmethod修饰符

    一.staticmethod(function) Return a static method for function.A static method does not receive an imp ...

随机推荐

  1. Python处理Oracle数据库的学习过程

    Python处理Oracle数据库的学习过程 背景 产品数据存在一些大小写敏感的数据迁移到不敏感的数据库时出现报错的情况. 基于此, 我这边跟帅男同学学习了下Python的使用. 因为这一块一直比较菜 ...

  2. 是否开启超线程对CPU不同命令的影响情况

    背景 最近公司购买了一台服务器, 要进行一次性能测试. 基于此, 我这边进行了一下超线程与否的测试验证 使用stress-ng的命令,对所有的 CPU 方法进行测试 然后只分析 bogo ops/s ...

  3. VCSA 添加新管理用户的方法

    VCSA 6.7 添加单独虚拟机管理员账户的方法 最近一次护网工作中,要求升级vCenter的版本, 所以比较无奈进行了相关的升级和设置, 管理员的分发与之前的vcenter的不太一致, 这里面简单记 ...

  4. 使用influxdb以及Grafana监控vCenter的操作步骤

    1. 下载安装介质 计划telegraf和influxdb 使用rpm包进行安装.Grafana使用docker容器方式安装 下载路径为: https://repos.influxdata.com/r ...

  5. 前端 Git-Hooks 工程化实践

    前言 前段时间,部门的前端项目迁移到 monorepo 架构,笔者在其中负责跟 git 工作流相关的事情,其中就包括 git hooks 相关的工程化的实践.用到了一些常用的相关工具如 husky.l ...

  6. 详解Promise.race()可以解决多个异步请求那个请求先返回

    Promise.race([]);接受一个参数,由promise组成的一个数组: 它的返回结果是promise对象: 它的结果和状态由什么去决定呢? 由第一个改变Promise状态的对象去决定:若是返 ...

  7. 【调研】VictoriaMetrics的上报api能否替换prometheus的api?

    prometheus的上报api在:https://github.com/prometheus/client_golang VictoriasMetrics的上报API在:https://github ...

  8. js下载附件(文件时候),文件名一直不出现乱码

    if (lastUrl.name) { //我们后端很奇怪有时候是个对象属性,有时候是个string window.open(url + `?attname=${lastUrl.name}`); } ...

  9. 学科知识图谱学习平台项目 :技术栈Java、Neo4j、MySQL等超详细教学

    学科知识图谱学习平台项目 :技术栈Java.Neo4j.MySQL等超详细教学 0.效果展示 1.安装教程 安装Java SDK 11,下载前需要登录Oracle账号,下载链接,安装教程,测试是否能在 ...

  10. MySQL 权限与备份管理(精简笔记)

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RD ...