黑马程序员技术交流社区

标题: 浅析类中的静态方法、类方法和实例方法 [打印本页]

作者: lu1427012565    时间: 2018-7-31 23:13
标题: 浅析类中的静态方法、类方法和实例方法

静态函数(@staticmethod):

即静态方法,主要处理与这个类的逻辑关联;

静态方法是既不需要访问实例属性或者调用实例方法

也不需要访问类属性或者调用类方法的方法


类函数(@classmethod):

即类方法, 更关注于从类中调用方法, 而不是在实例中调用方法, 可以用作方法重载, 传入参数cls;

成员函数: 实例的方法, 只能通过实例进行调用;


具体应用:

日期的方法, 可以通过实例化(__init__)进行数据输出, 传入参数self;

可以通过类的方法(@classmethod)进行数据转换, 传入参数cls;

可以通过静态方法(@staticmethod)进行数据验证;

代码:

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               
          def display(self):         
                    return "{0}*{1}*{2}".format(self.day, self.month, self.year)      
          # 定义类方法   
          @classmethod      
          def from_string(cls, date_as_string):         
                    day, month, year = map(int, date_as_string.split('-'))         
                    date1 = cls(day, month, year)         
                    return date1   
          # 定义静态方法     
          @staticmethod      
          def is_date_valid(date_as_string):         
                    day, month, year = map(int, date_as_string.split('-'))         
                    return day <= 31 and month <= 12 and year <= 3999        
date1 = Date('31', '07', '2018')  
date2 = Date.from_string('31-07-2018')  
print(date1.display())  
print(date2.display())  
print(date2.is_date_valid('31-07-2018'))  print(Date.is_date_valid('31-07-2018'))
能力有限,在自己理解的范围内,简单说说自己对静态方法、类方法和实例方法的理解,不喜勿喷,嘻嘻嘻






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2