python staticmethod and classmethod方法
静态方法无绑定,和普通函数使用方法一样,只是需要通过类或者实例来调用。没有隐性参数。
实例方法针对的是实例,类方法针对的是类,他们都可以继承和重新定义,而静态方法则不能继承,可以认为是全局函数。
- #https://julien.danjou.info/blog/2013/guide-python-static-class-abstract-methods
- class Date:
- def __init__(self,month,day,year):
- self.month = month
- self.day = day
- self.year = year
- def display(self):
- return "parent class {0}-{1}-{2}".format(self.month,self.day,self.year)
- @staticmethod
- def smil(month,day):
- return Date(month,day,2015)
- @classmethod
- def 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)
python staticmethod and classmethod方法的更多相关文章
- python @staticmethod和@classmethod
Python其实有3个方法,即 静态方法 (staticmethod), 类方法 (classmethod)和 实例方法. 如下: def foo(x): print "executing ...
- python @staticmethod和@classmethod的作用
一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法. 而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用. 这有利于组织代码,把某些应 ...
- 飘逸的python - @staticmethod和@classmethod的作用与区别
一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法. 而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用. 这有利于组织代码,把某些应 ...
- python staticmethod和classmethod(转载)
staticmethod, classmethod 分别被称为静态方法和类方法. staticmethod 基本上和一个全局函数差不多,只不过可以通过类或类的实例对象(python里只说对象总是容易产 ...
- Python中的 @staticmethod@classmethod方法
python类中有三种方法,常见的是实例方法,另外两种是staticmethod装饰的静态方法,和classmethod装饰的类方法. 1.对比 流畅的python里,用一个例子进行了对比: (1)两 ...
- Python staticmethod classmethod 普通方法 类变量 实例变量 cls self 概念与区别
类变量 1.需要在一个类的各个对象间交互,即需要一个数据对象为整个类而非某个对象服务. 2.同时又力求不破坏类的封装性,即要求此成员隐藏在类的内部,对外不可见. 3.有独立的存储区,属于整个类. ...
- 【面试必问】python实例方法、类方法@classmethod、静态方法@staticmethod和属性方法@property区别
[面试必问]python实例方法.类方法@classmethod.静态方法@staticmethod和属性方法@property区别 1.#类方法@classmethod,只能访问类变量,不能访问实例 ...
- Python的3个方法:静态方法(staticmethod),类方法(classmethod)和实例方法
Python的方法主要有3个,即静态方法(staticmethod),类方法(classmethod)和实例方法,如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
- Python语言特性之3:@staticmethod和@classmethod
问题:Python中@staticmethod和@classmethod两种装饰器装饰的函数有什么不同? 原地址:http://stackoverflow.com/questions/136097/w ...
随机推荐
- 【转】java-String中的 intern()
转自:http://blog.sina.com.cn/s/blog_69dcd5ed0101171h.html 1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值 ...
- Useful links
Better JavaScript with ES6 Pt.IPopular Features pt.II A Deep Dive into Classes pt.III Cool Collectio ...
- ps 文字处理篇
ps文字处理篇 1.对文字镂空处理并且移除到新图像上: 首先创建图层-文字编辑-横排编辑 其次 魔棒工具选择通过颜色来选择选区 右击图层-栅格化图层 删除键将选择的颜色删除留下选区- 复制粘贴到另一个 ...
- 对比SerialCommunication和微软的SerialPort,向SerialPort看齐
SerialCommunication是我综合网上看到的代码稍作修改而成的串口通信类,而SerialPort则是C#的System类库的IO目录Ports子目录下的串口通信类.SerialCommun ...
- magento事件(event)的dispatchEvent(分发)和catchEvent(获取)
当你需要扩展Magento的核心的功能时有两个选择: (1)重写(override)Magento的core classes (2)使用Magento的event-driven 机制 由于你只能重写一 ...
- input checkbox属性-Indeterminate状态
我们在使用input标签,多选框时,通常会看到两种状态,即选中(checked)和被选中(unchecked). // 选中状态也可写成checked="checked" chec ...
- Mvc自定义路由让支持.html的格式
前言 在大多时候,我们都需要自定义路由,当我们设置为/list/1.html的时候,有的时候会出现以下异常. routes.MapRoute( "category", // 路由名 ...
- smarty中使用truncate出现乱码,用mb_substr解决
- Resharper 8.2 注册码
用户名:ronle注册码:ZoJzmeVBoAv9Sskw76emgksMMFiLn4NM
- python 的var_dump
from __future__ import print_function from types import NoneType __author__ = "Shamim Hasnath&q ...