zoukankan      html  css  js  c++  java
  • python staticmethod&classmethod

    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'>

  • 相关阅读:
    Nginx upstream的5种权重分配方式分享
    MySQL——约束(constraint)详解---转载
    analysis简介 --转载
    软件测试工具LoadRunner中如何定义SLA?--转载
    jemeter如何设置用户取参数唯一不重复---------转载
    loadrunner中web_reg_find函数的用法及测试脚本实例
    LoadRunner中将中文转换为URL编码类型的方法
    LoadRunner字符串编码转换函数:lr_convert_string_encoding
    Loadrunner模拟JSON接口请求进行测试
    http请求数据的方式以及格式
  • 原文地址:https://www.cnblogs.com/wxl-dede/p/4993058.html
Copyright © 2011-2022 走看看