1.类的属性
'''类属性:
不能用实例化对象对类属性进行修改
只类用类对象对其属性进行修改
'''
class Police(object):
name='警察'
Police.name='交通警察'
print(Police.name)
police=Police()
police.name='民警'
print(police.name)
print(Police.name)
运行结果:
交通警察
民警
交通警察
即原理是在对类进行实例化时会在内存当中开辟一个新的内存存放类当中的属性,所以用实例化后的对象修改的其实是新内存对象当中的属性而不会修改类的属性,因为两者的内存地址不同。
2.类方法
'''
类方法:
需要用装饰器@classmethod 标识其为类方法
第一个参数必须是对象,一般用cls作为参数名
使用场景:
当类方法中需要适用对象(比如访问私有类属性)时
定义类方法
类方法一般和类属性配合使用
'''
class Police(object):
__name='交通警察'
@classmethod
def print_info(cls):
print(cls.__name)
police=Police()
police.print_info()
运行结果
交通警察
即类方法使用的场景就是对类属性进行操作,类属性又分为一般的类属性和私有类属性两种形式。
3.静态方法
'''
通过装饰器@staticmethod 进行修饰
不需要传入类对象和实例化对象(cls和self)
实例化对象和类对象可以访问静态方法
即不需要使用实例化对象也不需要使用类对象时定义
静态方法
取消不需要的参数传递,有利于减少不必要的内存使用和性能消耗
'''
class Police(object):
@staticmethod
def print_info():
print('这是一个静态方法')
Police.print_info()
police=Police()
police.print_info()
运行结果
这是一个静态方法
这是一个静态方法