1. 程式人生 > >面向物件【林老師版】:面向物件練習(六)

面向物件【林老師版】:面向物件練習(六)

一、編寫一個學生類,產生一堆學生物件

1、程式碼

class Student:
    school='luffycity'

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

    def learn(self):
        print('%s is learing' %self.name)


stu1=Student('alex','male',38)
stu2=Student('jinxing','female',78)
stu3=Student('egon','male',18)
print(stu1.__dict__)
print(stu2.__dict__)
print(stu3.__dict__)

  輸出

{'name': 'alex', 'sex': 38, 'age': 'male'}
{'name': 'jinxing', 'sex': 78, 'age': 'female'}
{'name': 'egon', 'sex': 18, 'age': 'male'}

二、有一個計數器(屬性),統計總共例項了多少個物件

1、程式碼

class Student:
    school='luffycity'
    count=0

    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex
        # self.count+=1
        Student.count+=1

    def learn(self):
        print('%s is learing' %self.name)


stu1=Student('alex','male',38)
stu2=Student('jinxing','female',78)
stu3=Student('egon','male',18)
stu4=Student('luoahong','male',18)


print(Student.count)
print(stu1.count)
print(stu2.count)
print(stu3.count)
print(stu4.count)
print(stu1.__dict__)
print(stu2.__dict__)
print(stu3.__dict__)

2、輸出

4
4
4
4
4
{'name': 'alex', 'sex': 38, 'age': 'male'}
{'name': 'jinxing', 'sex': 78, 'age': 'female'}
{'name': 'egon', 'sex': 18, 'age': 'male'}

三、練習2:模仿LoL定義兩個英雄類,

要求:

英雄需要有暱稱、攻擊力、生命值等屬性;
例項化出兩個英雄物件;
英雄之間可以互毆,被毆打的一方掉血,血量小於0則判定為死亡。

1、程式碼

class Garen:
    camp='Demacia'

    def __init__(self,nickname,life_value,aggresivity):
        self.nickname=nickname
        self.life_value=life_value
        self.aggresivity=aggresivity

    def attack(self,enemy):
        enemy.life_value-=self.aggresivity
        #r1.life_value-=g1.aggresivity

class Riven:
    camp = 'Noxus'

    def __init__(self, nickname, life_value, aggresivity):
        self.nickname = nickname
        self.life_value = life_value
        self.aggresivity = aggresivity

    def attack(self, enemy):
        enemy.life_value -= self.aggresivity

g1=Garen('草叢倫',100,30)

r1=Riven('可愛的銳雯雯',80,50)

print(r1.life_value)
g1.attack(r1)
print(r1.life_value)

2、輸出

80
50