一.类属性与实例属性
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解释器自动将对象传递给类里面定义的方法