day 16

今日内容大纲

 01  面试
1.技术 50% 2.谈吐,交朋友 50%
02 昨日知识回顾
03 作业讲解
04 类空间,对象空间,查询顺序
05 组合
06 预习博客内容
07 作业

#版本一:代码不合理,人物利用武器攻击别人,动作发起者是人,而不是武器
 class Game_role:
     def __init__(self, name, ad, hp):
         self.name = name
         self.ad = ad
         self.hp = hp

     def attack(self, p):
         p.hp = p.hp - self.ad
         print('%s攻击%s,%s掉了%s血,%s还剩%s血' % (self.name, p.name, p.name, self.ad, p.name, p.hp))

p1 = Game_role('盖伦', 20, 500)
p2 = Game_role('亚索', 50, 200)
p1.attack(p2)
print(p2.hp)

class weapon:
def __init__(self,name,ad):
self.name=name
self.ad=ad
def fight(self,p1,p2):
p2.hp=p2.hp-self.ad
print('%s用%s攻击了%s,%s掉了%s血,还剩%s血'%(p1.name,self.name,p2.name,p2.name,self.ad,p2.hp))

p1 = Game_role('盖伦', 20, 500)
p2 = Game_role('亚索', 50, 200)

axe = weapon('斧子',60)
knife = weapon('小刀',20)

axe.fight(p1,p2)
axe.fight(p1,p2)
knife.fight(p1,p2)
knife.fight(p2,p1)
#版本二
class Game_role:
    def __init__(self, name, ad, hp):
        self.name = name
        self.ad = ad
        self.hp = hp

    def attack(self, p):
        p.hp = p.hp - self.ad
        print('%s攻击%s,%s掉了%s血,%s还剩%s血' % (self.name, p.name, p.name, self.ad, p.name, p.hp))
    def Armament_weapon(self,wea):
        self.wea=wea

 p1 = Game_role('盖伦', 20, 500)
 p2 = Game_role('亚索', 50, 200)
 p1.attack(p2)
 print(p2.hp)

class weapon:
    def __init__(self,name,ad):
        self.name=name
        self.ad=ad
    def fight(self,p1,p2):
        p2.hp=p2.hp-self.ad
        print('%s用%s攻击了%s,%s掉了%s血,还剩%s血'%(p1.name,self.name,p2.name,p2.name,self.ad,p2.hp))

p1 = Game_role('盖伦', 20, 500)
p2 = Game_role('亚索', 50, 200)

axe = weapon('斧子',60)
knife = weapon('小刀',20)
print(axe)
p1.Armament_weapon(axe) #给p1装备了斧子
print(p1.wea)
p1.wea.fight(p1,p2)

组合:

给一个类的对象封装一个属性,这个属性是另一个类的对象

class Person:
    animal = '高级动物'
    soul = '有灵魂'
    language = '语言'

    def __init__(self, country, name, sex, age, hight):
        self.country = country
        self.name = name
        self.sex = sex
        self.age = age
        self.hight = hight

    def eat(self):
        print('%s吃饭' % self.name)

    def sleep(self):
        print('睡觉')

    def work(self):
        print('工作')


Person.__dict__['sleep'](111)

p1 = Person('菲律宾','alex','未知',42,175)
p2 = Person('菲律宾','alex','未知',42,175)
p3 = Person('菲律宾','alex','未知',42,175)
p1.animal = '禽兽'
print(p1.animal)

print(Person.name)
p2 = Person('美国','武大','',35,160)

查询顺序:
  对象.属性 : 先从对象空间找,如果找不到,再从类空间找,再找不到,再从父类找....
  类名.属性 : 先从本类空间找,如果找不到,再从父类找....

对象与对象之间是互相独立的.

计算一个类 实例化多少对象.

class Count:
    count = 0
    def __init__(self):
        Count.count = self.count + 1

obj1 = Count()
obj2 = Count()

print(Count.count)
count = 0

def func():
    print(count)
func()

class Count:
    count = 0
    def __init__(self):
        pass

通过类名可以更改我的类中的静态变量值
Count.count = 6
print(Count.__dict__)

但是通过对象 不能改变只能引用类中的静态变量

obj1 = Count()
print(obj1.count)
obj1.count = 6

 


原文地址:https://www.cnblogs.com/hongweijiang/p/10862469.html