class Person(object):
#私有类属性
__type = "黄种人"
def __init__(self):
#实例属性,都是在__init__方法里!
self.name = "小红"
#定义一个实例方法(接收self的就是实例方法,因为self就表示实例本身!)
def show(self):
print("我是实例方法")
#用关键字classmethod修饰的方法就是类方法
@classmethod
def show_msg(cls):
print(cls)
print("我是类方法!")
print(cls.__type)
#类方法的使用场景(在类的方法里面可以获取或修改类属性!)
@classmethod
#修改类属性
def set_type(cls,type):
cls.__type = type
#获取类属性
@classmethod
def get_type(cls):
return cls.__type
#用关键字staticmethod修饰的方法就是静态方法
#所谓静态,就是和当前的类和实例没有任何关系
#一般情况静态方法会使用到当前类的逻辑,节省内存
@staticmethod
def show_static():#不传任何参数
print("我是静态方法")
#创建一个实例,利用实例调用(实例方法,类方法,静态方法)
p =Person()
p.show()
p.show_msg()
p.show_static()
print()
#使用类名调用对象方法(需要传入对象)
Person.show(p)
#使用类名调用类方法
Person.show_msg()
#使用类名调用静态方法
Person.show_static()
#扩展
#使用实例调用类方法修改类属性值
p.set_type("黑种人") #这里的p是Person类的一个实例,所以就代表Person类了
res = p.get_type()
#查看类属性修改成功没有
print(res)
输出结果:

最后用实例调用类方法,成功的把类的私有属性修改为“黑种人”,并打印。
281

被折叠的 条评论
为什么被折叠?



