day22 面向对象
Posted wujunjie-sir
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day22 面向对象相关的知识,希望对你有一定的参考价值。
# 基础数据类型 # 函数 # 基础 # 装饰器 (进阶可以放着) # 迭代器和生成器 (生成器 需要熟练掌握yield) # 递归函数(能看懂) # 内置函数和匿名函数 (内置函数中的红色、黄色函数要记住) # 模块 —— 现成的东西 直接拿来用 # 包 —— 相对导入(放着) # 正则表达式 —— 至少掌握元字符和量词 网站上的那些常用正则表达式要看懂 # 异常处理 —— 会用 # dict # d = {‘k‘:‘v‘} # # list # [1,2] # print(dict) # 类 # print(d) # 对象 # 自定义类 # def 函数名(): # pass # class 类名: # 属性 = ‘a‘ # # print(类名.属性) # 类名的作用 就是操作属性 查看属性 # class Person: # 类名 # country = ‘China‘ # 创造了一个只要是这个类就一定有的属性 # # 类属性 静态属性 # def __init__(self,*args): # 初始化方法,self是对象,是一个必须传的参数 # # self就是一个可以存储很多属性的大字典 # self.name = args[0] # 往字典里添加属性的方式发生了一些变化 # self.hp = args[1] # self.aggr = args[2] # self.sex = args[3] # # def walk(self,n): # 方法,一般情况下必须传self参数,且必须写在第一个 # # 后面还可以传其他参数,是自由的 # print(‘%s走走走,走了%s步‘%(self.name,n)) # # # print(Person.country) # 类名 可以查看类中的属性,不需要实例化就可以查看 # alex = Person(‘狗剩儿‘,100,1,‘不详‘) # 类名还可以实例化对象,alex对象 # 实例化 # # print(alex.__dict__) # 查看所有属性 # print(alex.name) # 查看属性值 # # print(alex.hp) # 查看属性值 # alex.walk(5) # Person.walk(alex,5) # 调用方法 类名.方法名(对象名) # print(Person.__dict__[‘country‘]) # Person.__dict__[‘country‘] = ‘印度‘ # print(alex.__dict__[‘name‘]) # alex.__dict__[‘name‘] = ‘二哥‘ # print(alex.__dict__) # print(alex.name) # print(alex.name) # alex.name = ‘二哥‘ # alex.__dict__[‘name‘] = ‘二哥‘ # alex.age = 83 # print(alex.__dict__) # print(alex.name) # 对象 = 类名() # 过程: # 类名() 首先 会创造出一个对象,创建了一个self变量 # 调用init方法,类名括号里的参数会被这里接收 # 执行init方法 # 返回self # 对象能做的事: # 查看属性 # 调用方法 # __dict__ 对于对象的增删改查操作都可以通过字典的语法进行 # 类名能做的事: # 实例化 # 调用方法 : 只不过要自己传递self参数 # 调用类中的属性,也就是调用静态属性 # __dict__ 对于类中的名字只能看 不能操作 # 人狗大战 def Dog(name,blood,aggr,kind): dog = { ‘name‘: name, ‘blood‘: blood, # 血量 ‘aggr‘: aggr, # 攻击力 ‘kind‘: kind, } def bite(person): person[‘blood‘] -= dog[‘aggr‘] print(‘%s被咬了,掉了%s的血‘ % (person[‘name‘], dog[‘aggr‘])) dog[‘bite‘] = bite return dog def Person(name,blood,aggr,sex): person = { ‘name‘ : name, ‘blood‘: blood, # 血量 ‘aggr‘: aggr, # 攻击力 ‘sex‘:sex, } def attack(dog): dog[‘blood‘] -= person[‘aggr‘] print(‘%s被打了,掉了%s的血‘ % (dog[‘name‘], person[‘aggr‘])) person[‘attack‘] = attack return person # 代码精简了 方便增加人物 方便修改 人物更加规范 —— 人模子 jin = Dog(‘金老板‘,1000,100,‘teddy‘) alex = Person(‘狗剩儿‘,100,1,‘不详‘) # nezha = Person(‘哪吒‘,200,2,‘不详‘) print(jin) jin[‘bite‘](alex) alex[‘attack‘](jin) # Dog函数和Person函数 都是定义了一类事物 # 直到调用了函数,赋值了之后才真的有了一个实实在在的人或狗 # 面向对象编程 # 所谓模子 就是 类 抽象的 我能知道有什么属性 有什么技能 但不能知道属性具体的值 # jin alex nezha 就是对象 有具体的值,属性和技能都是根据类规范的 class Dog: def __init__(self,name,blood,aggr,kind): self.name = name self.hp = blood self.aggr = aggr self.kind = kind def bite(self,person): # 狗咬人,人掉血 person.blood -= self.aggr class Person: def __init__(self,name,blood,aggr,sex): self.name = name self.blood = blood self.aggr = aggr self.sex = sex def attack(self,dog): dog.hp -= self.aggr if dog.hp <= 0: print(‘%s打了%s,%s被打死了,扑街~~~‘%(self.name,dog.name,dog.name)) else: print(‘%s打了%s,掉了%s血‘%(self.name,dog.name,self.aggr)) jin = Dog(‘金老板‘,100,20,‘teddy‘) # print(jin.name) alex = Person(‘alex‘,999,998,‘不详‘) jin.bite(alex) # Dog.bite(jin,alex) print(alex.blood) # alex attack alex.attack(jin) # Person.attack(alex,jin) print(jin.hp)
以上是关于day22 面向对象的主要内容,如果未能解决你的问题,请参考以下文章