zoukankan      html  css  js  c++  java
  • python面向对象之类的命名空间与组合

    一、类的命名空间

      定义:我们在创建一个类的时候就会创建一个类的命名空间,用来存储类中定义的所有的名字,这些名字称为类的属性

          类的属性有两种形式:静态属性和动态属性

          静态属性就是在类中定义的变量

          动态属性就是定义在类中的方法

      在调用上我们需要注意的是对象可以调用类中的属性,但是类名不可以调用对象的属性,由于对象和类之间存在一个关联关系所以对象能够找到类,但是类不能找到对象

      使用方法:类名.属性   只会寻找类中的静态变量名字

           对象.属性 会先在对象自己的命名空间中找名字,如果找不到在到类的内存空间中去找;

    二、类的组合

      什么叫组合:一个类的对象的属性是另一个类的对象,且两个类之间有一种“什么有什么的关系”

        组合的例子如下:

    #!/usr/bin/python
    # -*- encodeing:utf-8 -*-
    class  Weapon:
        def __init__(self,*args):
            self.name = args[0]
            self.price = args[1]
            self.aggr = args[2]
            self.defense = args[3]
        def kill(self,person,dog):
            print('%s使用了%s技能,击中了%s'%(person.name,self.name,dog.name))
            dog.hp -= self.aggr
            if dog.hp <= 0:
                print('%s被一刀致命'%dog.name)
            else:
                print('%s攻击了%s一次,%s掉了%s血,%s还剩%s血'%(person.name,dog.name,dog.name,self.aggr,dog.name,dog.hp))
    class Dog:
        def __init__(self,*args):
            self.name = args[0]
            self.kind = args[1]
            self.aggr = args[2]
            self.hp = args[3]
        def bite(self,person):
            person.hp -= self.aggr
            if person.hp  <= 0:
                print('%s咬了%s,%s被咬死了'%(self.name,person.name,person.name))
                a = input('复活请输入1:')
                if  a == '1':
                    b = int(input('请输入充值金额:'))
                    if b > 10000:
                        person.hp = 600
                        person.momey = b - 10000
                        print('复活成功,当前血量%s,当前账户余额%s' % (person.hp, person.momey))
            else:
                print('%s咬了%s,%s掉了%s血,%s还剩%s血'%(self.name,person.name,person.name,self.aggr,person.name,person.hp))
    class Person:
        def __init__(self,*args):
            self.name = args[0]
            self.sex = args[1]
            self.aggr = args[2]
            self.hp = args[3]
            self.momey = args[4]
            self.weap = args[5]
        def atter(self,dog):
            dog.hp -= self.aggr
            if self.momey >= 2000:
                c = input('是否购买武器,按1购买')
                if c == '1':
                    self.momey -= weapon.price
                    self.weap = weapon
                    print('购买成功,当前余额%s,当前武器%s' % (self.momey, self.weap.name))
                    ren.weap.kill(ren,hei)
            if dog.hp >=0 :
                print('%s打了%s,%s掉了%s血,%s还剩%s血'%(self.name,dog.name,dog.name,self.aggr,dog.name,dog.hp))
    weapon = Weapon('打狗棍',20000,40000,100)
    hei = Dog('小黑','teddy',200,200000)
    ren = Person('alex','',1000,600,0,weapon)
    flag = True
    while flag:
        if ren.hp <= 0 or hei.hp <= 0:
            break
        ren.atter(hei)
        hei.bite(ren)
  • 相关阅读:
    Linux操作系统定时任务系统 Cron 入门
    ssh命令远程登录
    jQuery 中 attr() 和 prop() 方法的区别
    javascript深入理解js闭包
    怎样使用Markdown
    顺颂商祺
    利用Code128字体将文本转换为code128条形码
    如何看懂Code128条形码
    SSH原理及操作
    ssh 22端口号拒绝
  • 原文地址:https://www.cnblogs.com/caoyf1992/p/8522857.html
Copyright © 2011-2022 走看看