首页 > 其他分享 >11.2单继承

11.2单继承

时间:2022-09-07 19:25:38浏览次数:72  
标签:__ name 继承 self 11.2 init hp ad

class Animal:
def __init__(self, name, hp, ad):
self.name = name
self.hp = hp
self.ad = ad

def eat(self):
'吃药方法'
self.hp += 5
print('%s吃药了%s剩余了%s血' % (self.name, self.name, self.hp))


class Person(Animal): # 声明一个类
def __init__(self, name, hp, ad, sex, job):
'初始化函数'
# 人特有的属性
self.sex = sex
self.job = job
# 下面调父类的属性
Animal.__init__(self, name, hp, ad)

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


class Dog(Animal): # 声明一个类
def __init__(self, name, kind, hp, ad):
'初始化函数'
# 狗特有的属性
self.kind = kind
# 下面调父类的属性
Animal.__init__(self, name, hp, ad)

def bite(self, person):
person.hp -= self.ad
print('%s咬了%s,%s掉了%s血,还剩%s血' % (
self.name,
person.name,
person.name,
self.ad,
person.hp))


zhangsan = Person('zhangsan', 200, 40, '不详', '射手')
lisir = Person('lisir', 400, 20, '男', '战士')
dog1 = Dog('旺财', '小土狗', 2000, 100)
dog2 = Dog('二哈', '哈士奇', 3000, 150)
dog1.bite(zhangsan)
lisir.attack(dog2)

zhangsan.eat()
dog1.eat()


# 总结:
# A类和B类都需要相同的方法
# 创建父类C,把相同的方法放到父类C中
# A类和B类 继承C类 A(C) B(C)
# A的对象和B的对象就可以调用C中的方法了
#
# A类和B类中有相同的方法,一部分功能相同,还有不同的部分
# 创建父类C,把相同的方法放到C类的方法中
# 在A类和B类保留不同的部分,然后在A类\B类中调用C类方法即可


# 练习:

class Role:
def __init__(self,name):
self.name =name

def show_course(self):
for item in Course.course_list:
print(item.name,item.price,item.period)



class Course:
course_list = []
def __init__(self, name, period, price):
self.name = name
self.period = period
self.price = price


class Student(Role):
def __init__(self,name):
# Role.__init__(self,name)
# super(Student,self).__init__(name)
# super第一个参数,当前所在的类
# super第二个参数,当前所在的对象
super().__init__(name)


class Manager(Role):
pass

python=Course('python','6个月',29800)
java=Course('java','6个月',27800)

Course.course_list.append(python)
Course.course_list.append(java)


banzhang=Student('班长')
banzhang.show_course()

laoding=Manager('老丁')
laoding.show_course()









标签:__,name,继承,self,11.2,init,hp,ad
From: https://www.cnblogs.com/zhh0125/p/16666921.html

相关文章

  • 11.3多继承
    #classC:#deffunc(self):#print('inc')##classB:#deffunc(self):#print('inB')###classA(B,C):#从左到右依次去找你调的方法,B......
  • 第4章 继承与派生
    面向对象程序设计有4个主要特点:抽象、封装、继承和多态性。类和对象→数据抽象与封装。面向对象技术强调软件的可重用性(softwarereusability)。C++语言提供了类的继承......
  • 模板语法之继承
    什么是模板继承模板继承就是指可以使父模板的内容重用,子模板直接继承父模板的全部内容,并可以覆盖父模板中相应的块继承的语法父模板中:1.用block标签标识中哪些在子模板......
  • 【Java基础】面向对象的特征:继承性
    1.什么是继承继承表示两个类之间的一种关系。子类继承父类,则子类具有父类的属性和方法,同时可以扩展自己属性或功能。子类更具体,父类更抽象。2.为什么要有继承定义两......
  • Java开发学习(三十)----Maven聚合和继承解析
    一、聚合分模块开发后,需要将这四个项目都安装到本地仓库,目前我们只能通过项目Maven面板的install来安装,并且需要安装四个,如果我们的项目足够多,那么一个个安装起来还是......
  • python 封装、抽象、多态和继承的实现
    封装的实现#封装classpeople:def__init__(self,name,money):self.name=nameself.__money=money#私有属性,只能类的内部使用--》数据封装......
  • 样式优先级的规则:!important`>行内样式>嵌入样式>外链样式>id选择器>类选择器>标签选
    CSS样式的优先级应该分成四大类第一类`!important`,无论引入方式是什么,选择器是什么,它的优先级都是最高的。第二类引入方式,行内样式的优先级要高于嵌入和外链,嵌入和外链如......
  • GO语言自学_005_类的嵌套_类的继承
    packagemainimport"fmt"//定义一个Human类typeHumanstruct{//属性namestringageintgenderstring}//定义一个学生类嵌套Human类typ......
  • MVN4️⃣聚合 & 继承
    聚合用于快速构建项目,继承用于快速配置相同点:打包方式为pom,可以将两种关系制作到同一个pom文件中。属于设计型模块,无实际的模块内容。不同点:聚合:在当前模块中......
  • PostgreSQL-表继承
    让我们从一个例子开始:假设我们正在尝试为城市构建一个数据模型。每个州都有许多城市,但只有一个首府。我们希望能够快速检索任何特定州的首都。这可以通过创建两张表来完成,......