# 对象方法(实例方法)、类方法、静态方法总结
# 1.对象方法(实例方法) ===========================================
class Init1:
__a = 2 # 私有属性
b = 44 # 公有属性
def show(self): # 公有方法
self.__a = 3 # 新定义一个私有属性a,并赋值
print(self.__a) # 打印新定义的私有属性
Init1.__a = 5 # 给私有属性赋值
print(Init1.__a) # 打印私有属性
# 打印属性a
print(Init1.b) # 类直接访问公有属性
my_init = Init1() # 创建类的对象
my_init.show() # 类的对象访问方法
Init1.b += 1 # 公有属性运算
my_init.b += 1 # 公有属性运算
print(my_init.b) # 类的对象访问公有属性
# 2.类方法 =========================================================
class Init2(object): # Init2(object): 等价于 Init2:
a = 11 # 定义公有属性
__b = 22 # 定义私有属性
@classmethod # 类方法修饰
def show(cls): # 封装类方法
cls.__b += 1 # 对私有属性赋值(属性要提前定义)
print(cls.__b) # 打印私有属性
Init2.__b += 1 # 私有属性运算
print(Init2.__b) # 打印私有属性
print(Init2.a) # 打印类访问的公有属性
Init2.show() # 直接类访问方法
Init2.a += 10 # 类访问公有属性运算
print(Init2.a) # 打印类访问的公有属性
# 3.静态方法 ========================================================
class Init3:
name = '' # 定义公有属性
__age = 0 # 定义私有属性
@staticmethod # 静态方法修饰
def show(age): # 封装静态方法
Init3.__age = age # 对私有属性赋值
print(Init3.__age, end=' ') # 打印私有属性
Init3.sex = '男' # 对私有属性赋值
print(Init3.sex) # 打印私有属性
Init3.name = '周华' # 对私有属性赋值
print(Init3.name, end=' ') # 打印私有属性
Init3.show(23) # 类访问静态方法
# 3.1.静态方法 =======================================================
class Init4:
__sex = 0 # 定义一个私有属性
def __init__(self, name, sex=18): # 构造方法
self.name = name # 定义一个公有属性,并赋值(只能作用在此方法内)
# Init4.name = name # 都是作用在此方法内
Init4.__sex = sex # 给私有属性赋值
print(self.name, end='\t') # 打印
@staticmethod # 静态方法修饰
def show(age): # 封装静态方法
Init4.__age = age # 对私有属性赋值
print(f'{Init4.__sex}\t{Init4.__age}') # 打印
def __del__(cls): # 默认系统会自动调用析构方法(参数通常是self)
print('结束') # 有个知识点很重要:析构方法是对象引用为0时,才会调用
my_info = Init4(name='周华', sex=23) # 创建类的对象
Init4.show('男') # 访问静态方法
print(666) # 思考:请问'666'在最后一样打印吗?
作者:周华
创作日期:2022/5/28