一.类属性与实例属性
1.类属性
- 类属性就是所有类对象都拥有的属性,它被所有类对象的实例对象共有;
- 占用内存:类属性在内存中只存在一个副本
- 作用域:通过类名、对象名均可访问
2.实例属性
- 即对象属性,不被所有类对象的的实例对象所共有
- 占用内存:有几个对象,就有几个实例属性
- 作用域:只能通过对象名来访问
二.类方法、静态方法、普通方法
1.类方法
类方法是类对象拥有的方法
一般用装饰器 @classmethod将其标识为类方法。
@classmethod: 将函数对象转化为类方法。
1)对于类方法,默认有一个cls参数
2)能够被实例对象和类去调用
2.静态方法
一般以装饰器 @staticmethod来标识其为静态方法
- 静态方法不需要传入self参数
- 能够通过实例对象和类名去访问
python解释器自动将对象传递给类里面定义的方法
3.普通方法
- 默认有个self参数
- 只能被实例对象调用
4、举例实现
class classname:
@classmethod
def a(cls):
print('类方法')
@staticmethod
def fun():
print('静态方法')
# 普通方法
def b(self):
print('普通方法')
if __name__ == '__main__':
# l类调用类方法
classname.a()
# 类调用静态方法
classname.fun()
c=classname()
# 对象调用类方法
c.a()
# 对象调用静态方法
c.fun()
# 对象调用普通方法
c.b()