面向对象高级特性之--类属性、实例属性、类方法、静态方法

一.类属性与实例属性

1.类属性

  • 类属性就是所有类对象都拥有的属性,它被所有类对象的实例对象共有;
  • 占用内存:类属性在内存中只存在一个副本
  • 作用域:通过类名、对象名均可访问

2.实例属性

  • 即对象属性,不被所有类对象的的实例对象所共有
  • 占用内存:有几个对象,就有几个实例属性
  • 作用域:只能通过对象名来访问

二.类方法和静态方法

1.类方法

类方法是类对象拥有的方法
一般用装饰器 @classmethod将其标识为类方法。
@classmethod: 将函数对象转化为类方法。
1)对于类方法,第一个参数必须是类名cls(形参)
2)能够通过实例对象和类名去访问

import  time
class Date(object):
    def __init__(self,year,month,day):  #实例化对象的过程
        self.year=year
        self.month=month
        self.day=day
    def __str__(self):  #魔术方法--将日期以固定形式显示
        return '%s-%s-%s'%(self.year,self.month,self.day)
    @classmethod
    def today(cls):
        """
        类方法@classmethod,传入类名Date
        @return: 返回类Date实例化出来的对象
        """
        now=time.localtime()
        return cls(now.tm_year,now.tm_mon,now.tm_mday)  #Date()实例化对象
if __name__ == '__main__':
    today=Date.today() #通过实例对象和类名访问
    print(today)

结果

2020-1-10

2.静态方法

一般以装饰器 @staticmethod来标识其为静态方法

  • 静态方法不需要传入任何参数
  • 能够通过实例对象和类名去访问
    python解释器自动将对象传递给类里面定义的方法
发布了36 篇原创文章 · 获赞 0 · 访问量 289

猜你喜欢

转载自blog.csdn.net/ANingL/article/details/103931457