类 有具体规范,无具体值 对象 有具体的值 dict 类 d = {"":""} 对象 自定义一个类格式: class 类名: # 可以跟()或者不跟 属性 = 'a' print(类名.属性)
1 class Person(): # 类名加():叫做实例化,会得到一个实例的结果 2 country = "China" # 类属性,只要是这个类就一定有这个属性 3 def __init__(self,*args): # 初始化方法,self是对象,是必须要传的参数 4 # print(self.__dict__) # self 就是一个可以存储很多属性的大字典 5 self.name = args[0] # 往字典里面存属性的方式和字典不太一样,要习惯一下下 6 self.hp = args[1] 7 self.aggr = args[2] 8 self.sex = args[3] 9 # self自己返回值了,不需要我们自己写return 了10 def dead(self,n): # 定义一个方法,必须含有参数,所有使用方法的时候必须要传参11 # self函数必须要在第一个参数就传入,这个参数决定了使用方法的对象12 print('%s死死死,死了%s次' %(self.name,n))13 14 suyang = Person("苏阳", 100, 1, "不详") # alex 对象 # 实例化对象15 # print(Person.country) # 查看类属性16 # print(suyang.__dict__) # 查看对象的全部属性17 # print(suyang.name) # 查看对象某个属性18 # Person.dead(suyang,5) # 调用方法 类名.方法名(对象名)19 # suyang.dead(5) # 相当于Person.walk(suyang,5)20 # 原因在于suyang已经被当做类里面的对象放进去了,21 # 可以直接使用类的方法22 23 print(Person.__dict__["country"]) # 字典存储类里面的所有的名字,24 print(suyang.__dict__["sex"]) # 字典存储了对象里面的所有的名字25 suyang.__dict__["sex"] = "禽兽" # 既然是字典那就可以用字典的操作进行处理26 print(suyang.__dict__["sex"] )27 print(suyang.sex) # 直接更改这个字典的操作是可以真实体现在对象里面的28 # 但是我们一般不这么用29 suyang.sex = "不详" # 一般来说还是用这种直接调用方法改岂不是更简单啊30 print(suyang.sex)
对象 = 类名() 过程: 类名() 首先会创造出一个对象,创建了一个self变量 调用init方法,类名括号里面的参数在这里接受 执行init方法 返回self值 对象能做的事情: 查看属性 调用方法 __dict__ 对于对象中的增删改查可以通过字典更改 类能做的事情: 实例化 调用方法,但是会报错需要传self参数,所以一般我们不用 调用类中的属性 __dict__ 对于类中的是不可以的,只能看不能改 面向对象可以让逻辑和数据组合,即属性和行为进行组和 函数式编程的数据和逻辑是完全分离的 面向对象对相同属性的一类事物进行抽象后分类 面向对象也对事物进行模板约束