类_练习题
练习1:编写一个学生类,产生一堆学生对象
class Student:school = 'Luffycity'count = 0def __init__(self, name, age, sex):self.name = nameself.age = ageself.sex = sexself.count += 1def learn(self):print('%s is learning' % self.name)stu1 = Student('alex', 'male', 38)
stu2 = Student('jinxin', 'female', 78)
stu3 = Student('Egon', 'male', 18)print(Student.count)
print(stu1.count)
print(stu2.count)
print(stu3.count)
结果输出
0
1
1
1
从以上结果可以看出,如果写成self.count ,他就会变成对象的私有属性,所以说虽然实例化了3次,但是类的count值为0,每个对象的count值为1
以下代码验证
print(stu1.__dict__)
print(stu2.__dict__)
print(stu3.__dict__)结果为{'name': 'alex', 'age': 'male', 'sex': 38, 'count': 1}
{'name': 'jinxin', 'age': 'female', 'sex': 78, 'count': 1}
{'name': 'Egon', 'age': 'male', 'sex': 18, 'count': 1}
修改代码
class Student:school = 'Luffycity'count = 0def __init__(self, name, age, sex):self.name = nameself.age = ageself.sex = sex# self.count += 1Student.count += 1def learn(self):print('%s is learning' % self.name)stu1 = Student('alex', 'male', 38)
stu2 = Student('jinxin', 'female', 78)
stu3 = Student('Egon', 'male', 18)print(Student.count)
print(stu1.count)
print(stu2.count)
print(stu3.count)
print(stu1.__dict__)
print(stu2.__dict__)
print(stu3.__dict__)结果为:3
3
3
3
{'name': 'alex', 'age': 'male', 'sex': 38}
{'name': 'jinxin', 'age': 'female', 'sex': 78}
{'name': 'Egon', 'age': 'male', 'sex': 18}
练习2:模仿王者荣耀定义两个英雄类
要求:
- 英雄需要有昵称、攻击力、生命值等属性;
- 实例化出两个英雄对象;
- 英雄之间可以互殴,被殴打的一方掉血,血量小于0则判定为死亡。
class Hero:def __init__(self,nick_name, life_value, aggresivity):self.nick_name = nick_nameself.life_value = life_valueself.aggresivity = aggresivitydef attack(self, enemy):enemy.life_value -= self.aggresivity# r1 = Hero('可爱的锐雯雯', 80, 50)
# g1 = Hero('草丛伦', 100, 30)
# print(r1.life_value)
# g1.attack(r1)
# print(r1.life_value)class Riven(Hero):camp = 'Noxus'# def __init__(self, nick_name, life_value, aggresivity):# super(Riven, self).__init__(nick_name, life_value, aggresivity)class Garen(Hero):camp = 'Demacia'# def __init__(self, nick_name, life_value, aggresivity):# super(Garen, self).__init__(nick_name, life_value, aggresivity)r1 = Riven('可爱的锐雯雯', 80, 50)
g1 = Garen('草丛伦', 100, 30)
print(r1.life_value)
g1.attack(r1)
print(r1.life_value)
print(r1.camp)
print(g1.camp)# 通过继承的方式新建类B,让B继承A,B会‘遗传’A的所有属性(数据属性和函数属性),实现代码重用
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
