'''面向对象编程
关键词: 面向过程 面向对象 类 方法
对象 都是 类 里的
类: 定义类=定义函数 class 类名(object): 其实就是python中提供的函数 类名:大驼峰(建议)
# 一个函数定义在模块内 叫做函数 # 一个函数定义在类中 就叫做方法 方法:又叫 对象方法 或者 实例方法
创建对象: 看下边的格式
添加属性: 赋值 和 获取信息: 调用方法
魔法方法: 只要创建 对象 = 类() 魔法方法自动执行,添加先设定好的内容
__init__格式: def __init__(self):
# 给对象添加属性并赋值
self.name = "旺财"
self.age = 5
self.color = "白色"
'''
init向类class中传入参数 格式:见001 1.在__init__(self,后边写入形参) 2.在调用 对象=类(填入实参)
说明: 不同对象的属性不同,各自有不同的id保存 ,但是实例方法相同(走,跑,跳等行为),它们的保存id相同
3.__init__方法print变量结果是位置
魔法方法:__str__ 用于 显示__init__添加的默认属性
1.有__str__方法的class,print结果就不是变量位置了,是变量信息
2.__str__必须用return来接收
类的文档说明,就是注释 print(Hero.__doc__) 用__doc__函数 : 类名.__doc__
魔法方法:错误:__del__ 用于 ?? __init__的信息 完全删除内存上的变量需要 del(变量名)
正确:__del__只有在变量引用计数为0的时候自动执行 作用:释放这段变量对应的内存
del +变量名 是删除的 (减少) 变量的引用计数
# 格式001
# class Hero(object):
# def __init__(self,name,skill,hp,mp): # 注意位置01 name,hp,skill,mp
# self.name = name # self的应用广泛
# self.hp = hp
# self.skill = skill
# self.mp = mp
# def xinxi(self):
# print('%s的血量是:%s'% (self.name,self.hp)) # 注意位置03 保证参数传入一一对应
# print('%s的技能是:%d'% (self.name,self.skill))
# print('%s的血量是:%d'% (self.name,self.mp))
# gailun = Hero('盖伦',1000,'无情打击',200) # 注意位置02 具体参数传入位置
# # gailun = Hero() # 魔法方法中有形参,调用必须填入实参
# gailun.xinxi()
# print(gailun) # gailun是变量默认打印内存中的位置<__main__.Hero object at 0x10217aa20>
# __str__方法
# class Hero(object):
# def __init__(self,name,hp,skill,mp):
# self.name = name
# self.hp = hp
# self.skill = skill
# self.mp = mp
# # def xinxi(self):
# # print('%s的血量是:%s'% (self.name,self.hp))
# # print('%s的技能是:%d'% (self.name,self.skill))
# # print('%s的血量是:%d'% (self.name,self.mp))
# def __str__(self):
# # print('%s的血量是:%d' % (self.name, self.hp)) # 报错:__str__型需要return来接收
# # print('%s的技能是:%s'% (self.name,self.skill))
# # print('%s的血量是:%d'% (self.name,self.mp))
# return '英雄:%s,血量:%d,技能:%s,蓝量:%d' % (self.name,self.hp,self.skill,self.mp) # self的广泛应用
#
# gailun = Hero('盖伦',1000,'无情打击',200)
# print(gailun) # 有__str__方法的class,print结果就不是变量位置了,是变量信息
# __del__方法
# class Hero(object):
# def __init__(self, name):
# # print('__init__方法被调用')
# self.name = name
#
#
# def __del__(self):
# # print("__del__方法被调用")
# print("%s 被 GM 干掉了..." % self.name)
#
#
#
# def __str__(self):
# return '英雄:%s'% self.name
#
#
# taidamier = Hero("泰达米尔")
# # print(taidamier)
# # del(taidamier)
# print(taidamier)