# 自定义类class Persion: country = 'China' # 也是创造属性,创造一个只要是这个类就一定有的属性,叫做类属性,也叫静态属性 # self 其实就是一个可以存储可多属性的大字典,self存储属性 def __init__(self, *args): # 构造函数 self对象,本质self其实是一个字典,将字典填充好后,也就是构造对象的过程,然后将self返回 self.name = args[0] # self.name 的name是属性 self.hp = args[1] self.aggr = args[2] self.sex = args[3] # print(self.__dict__) # {'hp': 1000, 'aggr': 100, 'name': '狗剩儿', 'sex': 'boy'} def walk(self, n): # 类的方法,类方法一般情况下必须含有self参数,并且在第一个位置,后面可以传其他参数 print('%s zou zou zou le %s bu' % (self.name , n))why = Persion('狗剩儿', 1000, 100, 'boy') # 调用了构造函数,构造完self后,self返回给了why,实例化的过程print(why.hp)print(why.__dict__) # 查看所有属性值# Persion里有个walk名字print(Persion.__dict__) # {'walk':, '__weakref__': , '__init__': , '__doc__': None, '__module__': '__main__', '__dict__': }Persion.walk(why, 5) # 狗剩儿 zou zou zou le 5 bu # 此种方法调用,类名.方法名(对象名调用),必须传入指定对象名why.walk(5) # 狗剩儿 zou zou zou le 5 bu 此种方法不需要传self,等价于 Persion.walk(why)print(Persion.country) # China 通过类名可以调用类中的静态属性,不需要实例化对象就可以查看类的静态属性why.age = 83 # 增加了一个属性age = 83,可以增加属性print(why.age) # 83# 对象能做的事: # 查看与操作属性(增删改) # 调用方法 # __dict__对于对象的增删改查操作,都可以通过字典的语法操作,但一般不这么进行操作,而是why.name = 'haha'方式操作 # why.__dict__['name'] = 'haha'(本质) # 对象的增删改查操作都可以参考字典的方式进行操作# 类名能做的事情 # 可以实例化一个对象 # 能通过类名调用方法,但是需要指定对象参数,不建议这么用 # 调用类中的静态属性 # 类的__dict__,也就是类中的名字只能看,不能修改# 不管是类名,还是对象,都可以调用.__dict__ # 类名.__dict__得到的是类的所有名字,包括函数名(都是键值对形式)。 # 对象名.__dict__,得到的是对象的所有属性值(键值对) # 其实都可以用操作字典的方式进行访问