静态方法无绑定,和普通函数使用方法一样,只是需要通过类或者实例来调用。没有隐性参数。

实例方法针对的是实例,类方法针对的是类,他们都可以继承和重新定义,而静态方法则不能继承,可以认为是全局函数。

#https://julien.danjou.info/blog/2013/guide-python-static-class-abstract-methods
class Date:def __init__(self,month,day,year):self.month = monthself.day = dayself.year = yeardef display(self):return "parent class {0}-{1}-{2}".format(self.month,self.day,self.year)@staticmethoddef smil(month,day):return Date(month,day,2015)@classmethoddef cmil(self,month,day):return self(month,day,2015)class DateSub(Date):def display(self):return "subclass {0}-{1}-{2}".format(self.month,self.day,self.year)new_year = Date(1,1,2016)
mi_new_year = Date.smil(1,2)print(new_year.display())
print(mi_new_year.display())print(isinstance(new_year,Date))
print(isinstance(mi_new_year,Date))print("-"*40)
dateSub1=DateSub(10,19,2017)
dateSub2 =DateSub.smil(10,10)
dateSub3 =DateSub.cmil(10,11)
print(dateSub1.display())
print(dateSub2.display())
print(dateSub3.display())print("isinstance(dateSub1,DateSub) = %s " % isinstance(dateSub1,DateSub))
print("isinstance(dateSub2,DateSub) = %s " % isinstance(dateSub2,DateSub)) #subclass create plain Date object
print("isinstance(dateSub2,Date) = %s " % isinstance(dateSub2,Date))
print("isinstance(dateSub3,DateSub) = %s " % isinstance(dateSub3,DateSub))print("-"*40)
print Date.display
print Date.smil
print Date.cmil
print Date.cmil(1,1)

View Code

转载于:https://www.cnblogs.com/lxk613/p/4899160.html

python staticmethod and classmethod方法相关推荐

  1. python @staticmethod和@classmethod的作用

    一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法. 而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用. 这有利于组织代码,把某些应 ...

  2. @staticmethod 和@classmethod 方法

    Python 除了拥有实例方法外,还拥有静态方法和类方法,跟Java相比需要理解这个类方法的含义. class Foo(object): def test(self)://定义了实例方法 print( ...

  3. python classmethod 的cls_Python中的@staticmethod,@classmethod,self,cls到底是什么意思?...

    普通类方法 在Python中,通常我们调用某个类的方式,首先要实例化一个对象才能调用该类的方法,比如: # _*_ coding:utf-8 _*_ class People: def hello(s ...

  4. 浅谈python中的一般方法、静态方法(staticmethod)和类方法(classmethod)

    我们先来简单谈谈python类中一般方法.静态方法和类方法的区别. 1.类中的一般方法 一般方法在定义的时候,需要有表示类实例的参数(通常以self表示,例如def foo(self,arg1,arg ...

  5. python 类不实例化方法:@staticmethod或@classmethod

    讲解一 一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法. 而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用. 这有利于组织代码, ...

  6. python类方法中使用:修饰符@staticmethod和@classmethod的作用与区别,还有装饰器@property的使用

    python类方法中使用:修饰符@staticmethod和@classmethod的作用与区别,还有装饰器@property的使用(3-20181205) 文章目录: 一. @staticmetho ...

  7. python 中的static-method (静态函数), classmethod(类函数 ), 成员函数

    python 中的static-method (静态函数), classmethod(类函数 ), 成员函数 简介 类似Java.CPP中的类,可以定义static method.class meth ...

  8. Python基础——@staticmethod与@classmethod

    @staticmethod与隐式的静态成员方法的区别在于是否允许实例对象调用该静态方法(后者是不允许的) @staticmethod与@classmethod的区别在于后者无论是被实例调用还是被类对象 ...

  9. 【Python】@staticmethod和@classmethod的作用与区别

    前言 Python其实有3个方法,即静态方法(staticmethod),类方法(classmethod)和实例方法,一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法.而使用@static ...

最新文章

  1. 程序员版《我和我的家乡》,拼搏奋斗的IT人是家乡的骄傲!
  2. D-Link云摄像头超过120款产品存在漏洞,约40万台设备受影响
  3. 什么是多任务、进程、线程
  4. 面试官问,为什么建议MySQL列属性尽量用 NOT NULL ?
  5. sqli-lab——Writeup(38~over)堆叠等......
  6. JVM-内存溢出场景模拟
  7. 《设计模式解析》第1章 面向对象范型
  8. Spring Boot @ServletComponentScan 扫描 @WebServlet、@WebFilter、@WebListener
  9. [bzoj4538][Hnoi2016]网络
  10. 恢复“超级特工”加密的文件夹
  11. 用递归调用函数来把存在父子级别的数据封装成一个树状结构
  12. c语言 计算整数n的阶乘之和,c语言求阶乘之和是多少
  13. Microbiome:中国科学家完成鸡肠道微生物宏基因集的构建(张和平、魏泓、秦楠点评)...
  14. 教师计算机研修培训日志感言,2019年教师研修感言
  15. Kimball维度建模
  16. 采集全国疫情数据(Python)
  17. 【王阳明心学语录】-001
  18. 基于域控的SSO单点登录
  19. 三星打印机显示无法连接服务器,三星打印机不能打印,提示“无法识别的USB设备”解决办法...
  20. 阿里妈妈内容营销团队并入优酷 向樊路远汇报

热门文章

  1. ActiveReports 报表应用教程 (1)-Hello ActiveReports
  2. 理解int的存储方式以及VS二进制编辑器的使用
  3. c++类的构造函数详解
  4. 人类语言的表现形式和规则
  5. JDK源码解析之集合篇2--Collection
  6. 原生js实现发短信~chat
  7. UI 和 UX,区别在哪里?
  8. ABP官方文档翻译 6.1.1 MVC控制器
  9. [LeetCode] Sum of Two Integers 两数之和
  10. 企业生产环境不同业务的Linux分区方案