""" 类的组成: 属性: 类属性/类变量 对象属性/成员属性/成员变量 行为: 对象方法/成员方法 类方法 静态方法 类属于与成员属性: 1.定义位置不同: 类属性定义在类内,方法外 对象属性定义在__init__方法内 2.内存中存储的份数不同 类属性:唯一一份 对象属性:每个对象都有属于自己的一份 3.所有者不同: 类属性: 属于类 对象属性: 属于对象 4.访问方式不同: 类属性: 获取值: 类名.类属性 对象名.类属性 设置值: 类名.类属性 对象属性: 读写: 对象名.属性名 5.生命周期不同 类属性: 程序周期 对象属性: 对象创建时,出生,对象被系统回收时,结束 类方法: 定义: 需要使用@classmethod修饰 有一个必需参数cls 调用: 类名.类方法() 也可以使用对象调 对象.类方法() 静态方法 定义在类内的一个函数 @staticmethod 可以不用有任何参数 调用: 类名.静态方法() 对象.静态方法() """
class Student(object):
# 类属性
cls_id = 102
country = 'China'
def __init__(self,name,age):
self.name = name
self.age = age
@classmethod
def cls_method(cls):
print('我是类方法')
print(cls)
print(cls.cls_id)
@staticmethod
def static_method():
print('我是静态方法')
stu1 = Student('峰哥',40)# Student.__new__().__init__()
#类属性的访问 读
print(Student.cls_id)
print(stu1.cls_id)
# 类属性的访问 写
Student.cls_id = 101
# 为对象动态添加属性
stu1.cls_id = 105
# del stu1
print(Student.cls_id)
# 调用类方法
Student.cls_method()
# 使用对象调用类方法
stu1.cls_method() # stu1.__class__.cls_method()
#调用静态方法
Student.static_method()
stu1.static_method()