python中的这两种方法都通过修饰器来完成

静态方法

不需要传递类对象或者类的实例

可以通过类的实例.方法名a().foo()或者类名.方法a.foo()名来访问

当子类继承父类时,且实例化子类时,这个实例其实时父类的,而非子类的

静态方法的调用和普通方法的调用一样,只不过前面加个类名。

静态方法并没有太大卵用,主要考虑代码的封装性,可维护性

类方法:

默认传递类对象本身cls,当然可以利用类中的方法

可以通过类的实例.方法名a().foo()或者类名.方法a.foo()名来访问

当子类继承父类时,方法正常使用

class Date(object):

  day = 0

  month = 0  

  year = 0

  def __init__(self, day=0, month=0, year=0):            #存储初始的信息

    self.day = day

    self.month = month

    self.year = year

    print self.day, self.month, self.year

  @classmethod

  def from_string(cls,date_string):

    day, month, year = map(int, date_string.split('-'))

    date1 = cls(day, month, year)                      #cls是个类对象,不是实例

    return date1                                    #返回Date实例

  def foo(self):

    print 'I am foo'                        #普通的方法

  @staticmethod

  def is_date_valid(date_string):                    #验证方法封装在类中

    day, month, year = map(int, date_string.split('-'))

    return day <= 31 and month <= 12 and year <= 3999

---------------------------------------------------------------------------------------------

a=Date(1,2,3)

1 2 3

>>> a=Date.from_string('09-08-2015')

9 8 2015

>>> a.foo()

I am foo

>>> Date.is_date_valid('10-10-2015')

True

>>> type(Date.is_date_valid)

<type 'function'>

python staticmethod&classmethod的更多相关文章

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

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

  2. python staticmethod classmethod

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

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

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

  4. python @staticmethod @classmethod self cls方法区别

    一直在用这些东西,但是又从来没有总结过,正好今日想起来就总结一下这些东西 @staticmethod 静态方法,名义上归属类管理,不能使用类变量和实例变量,类的工具包放在函数前,不能访问类属性和实例属 ...

  5. python staticmethod和classmethod(转载)

    staticmethod, classmethod 分别被称为静态方法和类方法. staticmethod 基本上和一个全局函数差不多,只不过可以通过类或类的实例对象(python里只说对象总是容易产 ...

  6. python类方法@classmethod与@staticmethod

    目录 python类方法@classmethod与@staticmethod 一.@classmethod 介绍 语法 举例 二.@staticmethod 介绍 语法 举例 python类方法@cl ...

  7. Python staticmethod() 函数

    Python staticmethod() 函数  Python 内置函数 python staticmethod 返回函数的静态方法. 该方法不强制要求传递参数,如下声明一个静态方法: class ...

  8. 第7.16节 案例详解:Python中classmethod定义的类方法

    第7.16节  案例详解:Python中classmethod定义的类方法 上节介绍了类方法定义的语法以及各种使用的场景,本节结合上节的知识具体举例说明相关内容. 一.    案例说明 本节定义的一个 ...

  9. 第7.15节 Python中classmethod定义的类方法详解

    第7.15节  Python中classmethod定义的类方法详解 类中的方法,除了实例方法外,还有两种方法,分别是类方法和静态方法.本节介绍类方法的定义和使用. 一.    类方法的定义 在类中定 ...

随机推荐

  1. enumerated types

    控制台手动输入. package enums; import java.util.Scanner; public class EnumTest { public static void main(St ...

  2. poj 1821 Fence(单调队列优化DP)

    poj 1821 Fence \(solution:\) 这道题因为每一个粉刷的人都有一块"必刷的木板",所以可以预见我们的最终方案里的粉刷匠一定是按其必刷的木板的顺序排列的.这就 ...

  3. ElasticSearch远程随意代码运行漏洞(CVE-2014-3120)分析

    原理 这个漏洞实际上非常easy,ElasticSearch有脚本运行(scripting)的功能,能够非常方便地对查询出来的数据再加工处理. ElasticSearch用的脚本引擎是MVEL,这个引 ...

  4. oracle性能监控

    https://blog.csdn.net/yangshangwei/article/details/52449489#监控事例的等待 https://blog.csdn.net/yangshangw ...

  5. [树套树]K大数查询

    有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是多少.为了 ...

  6. asp+jQuery解决中文乱码

    1. [代码][ASP/Basic]代码 '在客户端使用javascript的escape()方法对数据进行编码,在服务器端使用对等的VbsUnEscape()对数据进行解码,同样在服务器端使用Vbs ...

  7. 【扬中集训DAY5T1】 交换矩阵

    [题目链接] 点击打开链接 [算法] 链表,对于每个点,存它的上,下,左,右分别是谁 [代码] #include<bits/stdc++.h> using namespace std; # ...

  8. flask logging 最佳实践

    flask项目中, 你可以使用python 的 logging模块实现记录日志. 也可以使用 flask 基于logging模块封装过的app.logger实现. 直接上代码 config.py im ...

  9. 【旧文章搬运】Windows内核常见数据结构(内核对象)

    原文发表于百度空间,2008-7-23========================================================================== 继续学习,继 ...

  10. Win32控制台程序和Win32应用程序

    刚接触Windows那一套,大多数概念都还没建立起来,整理了一下网上对“Win32控制台程序”的理解,谢谢各位网友了. win32控制台项目指在32位Windows命令提示符(即所谓的dos)环境下运 ...