• 面向对象编程


    面向对象编程:

    优点:可扩展性高

    缺点:编写复杂

    学生1:
        学校:老男孩
        姓名:李铁蛋
        性别:女
        年龄:18
        方法:
            选课
            学习
    学生1:
        学校:老男孩
        姓名:Nick
        性别:女
        年龄:48
        方法:
            选课
            学习
    
    

    绑定方法:定义在类内部的方法:如果类来调用:就是一个普通函数,有几个参数就需要传几个参数对象来调用:它叫对象的绑定方法,第一个参数不需要传,自动传递

    class Student:
        #变量表示属性
        school='oldboy'
        #__init__ 看好名字,不是__int__
        def __init__(x,name):
            x.name=name
        def choose(self):
            print("选课....")
        def study(self):
            print('%s学会了python'%self.name)
    
    stu1=Student('nick')
    stu1.study()
    stu1=Student('李铁蛋')
    stu1.study()
    
    
    
    nick学会了python
    李铁蛋学会了python
    

    super()方法是严格按照mro()列表顺序寻找父类的

    小游戏:

    import time
    class River:
        def __init__(self,name,atk,armor,hp,money,suck = 0):
            self.name = name
            self.atk = atk
            self.armor = armor
            self.hp = hp
            self.money = money
            self.suck = 0
        def attack(self,target):
            target.hp -= self.atk - target.armor
            self.hp += (self.atk - target.armor)*self.suck
            if (self.atk - target.armor)*self.suck == 0:
                print(f'{self.name}攻击了{target.name},{target.name}的生命值为{target.hp}')
            else:
                print(f'{self.name}攻击了{target.name},{target.name}的生命值为{target.hp}  {self.name}回了{(self.atk - target.armor)*self.suck}血')
    
    class Gailun:
        def __init__(self,name,atk,armor,hp,money,suck = 0):
            self.name = name
            self.atk = atk
            self.armor = armor
            self.hp = hp
            self.money = money
            self.suck = 0
        def attack(self,target):
            target.hp -= self.atk - target.armor
            self.hp += (self.atk - target.armor) * self.suck
            if (self.atk - target.armor) * self.suck == 0:
                print(f'{self.name}攻击了{target.name},{target.name}的生命值为{target.hp}')
            else:
                print(
                    f'{self.name}攻击了{target.name},{target.name}的生命值为{target.hp}  {self.name}回了{(self.atk - target.armor)*self.suck}血')
    
    class Duolan:
        def __init__(self,atk = 7,hp = 100,money = 475):
            self.atk = 7
            self.hp = 100
            self.money = 475
        def updata(self,target):
            target.atk += 7
            target.hp += 100
    class Blood_jian:
        def __init__(self, atk=60, suck=0.3, money=3000):
            self.atk = atk
            self.suck = 0.3
            self.money = 3000
    
        def updata(self, target):
            target.atk += 60
            target.suck += self.suck
    
    
    blood_jian = Blood_jian()
    river = River('river',54,12,414,3000)
    gailun = Gailun('gailun',56,19,455,2500)
    duolan = Duolan()
    
    i = 0
    while True:
        print(f'回合{i}')
        if river.money >= blood_jian.money:
            river.money -= blood_jian.money
            blood_jian.updata(river)
            print('river购买了饮血剑(攻击力+60,吸血+30%)')
        if gailun.money >= blood_jian.money:
            gailun.money -= blood_jian.money
            blood_jian.updata(gailun)
            print('gailun购买了饮血剑(攻击力+60,吸血+30%)')
        if river.money >= duolan.money:
            river.money -= duolan.money
            duolan.updata(river)
            print('river购买了多兰剑(攻击力+7,生命值+100)')
        if gailun.money >= duolan.money:
            gailun.money -= duolan.money
            duolan.updata(gailun)
            print('gailun购买了多兰剑(攻击力+7,生命值+100)')
        river.attack(gailun)
        gailun.attack(river)
        time.sleep(1)
        river.money += 20
        gailun.money +=20
        if river.hp<= 0 or gailun.hp<=0:
            break
        i = i +1
    if river.hp > 0:
        print('river胜利')
    else:
        print('gailun胜利')
        
        
    #### 赋予瑞文饮血剑和5把多兰剑的德玛对A    
       
       
       C:UsersAdministratorAppDataLocalProgramsPythonPython36python.exe D:/python/8.23面向对象/test.py
    回合0
    river购买了饮血剑(攻击力+60,吸血+30%)
    gailun购买了多兰剑(攻击力+7,生命值+100)
    river攻击了gailun,gailun的生命值为460  river回了28.5血
    gailun攻击了river,river的生命值为391.5
    回合1
    gailun购买了多兰剑(攻击力+7,生命值+100)
    river攻击了gailun,gailun的生命值为465  river回了28.5血
    gailun攻击了river,river的生命值为362.0
    回合2
    gailun购买了多兰剑(攻击力+7,生命值+100)
    river攻击了gailun,gailun的生命值为470  river回了28.5血
    gailun攻击了river,river的生命值为325.5
    回合3
    gailun购买了多兰剑(攻击力+7,生命值+100)
    river攻击了gailun,gailun的生命值为475  river回了28.5血
    gailun攻击了river,river的生命值为282.0
    回合4
    gailun购买了多兰剑(攻击力+7,生命值+100)
    river攻击了gailun,gailun的生命值为480  river回了28.5血
    gailun攻击了river,river的生命值为231.5
    回合5
    river攻击了gailun,gailun的生命值为385  river回了28.5血
    gailun攻击了river,river的生命值为181.0
    回合6
    river攻击了gailun,gailun的生命值为290  river回了28.5血
    gailun攻击了river,river的生命值为130.5
    回合7
    river攻击了gailun,gailun的生命值为195  river回了28.5血
    gailun攻击了river,river的生命值为80.0
    回合8
    river攻击了gailun,gailun的生命值为100  river回了28.5血
    gailun攻击了river,river的生命值为29.5
    回合9
    river攻击了gailun,gailun的生命值为5  river回了28.5血
    gailun攻击了river,river的生命值为-21.0
    gailun胜利
    
    Process finished with exit code 0
    
    
  • 相关阅读:
    模拟数据生成器mock.js入门
    node 常用依赖包
    xss 防范
    tree shaking sideEffects
    创建临时目录tmppromise
    node 防抖或拒绝服务 连接池
    node使用es module
    node child_process 子进程
    node 递归读取目录recursivereaddir
    毫秒时间转换
  • 原文地址:https://www.cnblogs.com/oxtime/p/11418744.html
Copyright © 2020-2023  润新知