#创建对象 时候就已经拥有的属性
# __init__具有初始化作用,当该类被实例化时会自动执行该函数,那么通常可把初始化属性放在这个方法里面
# 注意
# 类里面没有写__init__().python会自动创建,但是不执行任何操作
# class Hero:
# def __init__(self,name,hp,at):
# self.name=name
# self.hp=hp
# self.at=at
# def move(self):
# print(f'{self.name}正在移动')
#
# def hpp(self):
# print(f'生命值还有{self.hp}')
#
# def att(self):
# print(f'受到了{self.at}的攻击')
# #创建对象
# a=Hero('李白',200,100)
# b=Hero('澜',400,900)
# c=Hero('镜',600,200)
#
# a.move()
# a.hpp()
# a.att()
# b.move()
# b.hpp()
# b.att()
# c.move()
# c.hpp()
# c.att()
# 构造函数
# __init__()构造函数 魔法方法 通常用来做属性初始化或赋值操作--创建对象:python解释器默认会调用
# __def__() 析构函数 --删除对象 python解释器默认会调用的方法
# 析构函数用于在对象被清除后清除它占用的内存空间
# 作用:主要用于对那些长期占用内存的临时变量进行销毁
# 注意事项:
# 1.构造函数和析构函数一样,不能有返回值:
# 2.析构函数不能有参数
# 3.一个类只有一个析构函数
# 4.析构函数在对象销毁时,被调用
# 当对象在某个作用域中调用完毕,在跳出起作用域时,析构函数会被调用一次,可以用来释放我的内存空间
# 例一
class Person:
def __init__(self):
print('我是init方法')
def __del__(self): #析构函数
print('被销毁了这个函数')
# 创建对象
xm=Person()
print('最后一个')
def funa(a,b):
return a+b
print(funa(1,2))
# 例二
class Person:
def __init__(self):
print('我是init方法')
def __del__(self): #析构函数
print('被销毁了这个函数')
xm=Person()
del xm #手动删除,会立即执行
print('xiaolong')
# __str__()函数--能够在输出对象变量时,打印自定义内容
# 注意:
# 1.__str__()必须返回一个字符串
# 2.定义了__str__(),在打印对象,默认输出该方法的返回值
# class A:
# def __str__(self):
# return 'Hi'
# str1=A()
# print(str1)
class B:
def __init__(self,name,score,age,ability):
self.name=name
self.score=score
self.age=age
self.ability=ability
def name1(self):
print(f'他的名字是:{self.name}')
def name1(self):
print(f'他的分数是:{self.score}')
def name1(self):
print(f'他的年纪是:{self.age}')
def name1(self):
print(f'他的能力是:{self.ability}')
def __str__(self):
return f'他的名字是{self.name},他的总得分是:{self.score},他的年纪是:{self.age},他的能力等级是:{self.ability}'
Lbj=B('勒布朗',40000,40,'SSS+')
print(Lbj)
print(Lbj.__dict__)