ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python3 类的继承,2021年最新Python大厂面试笔试题分享

2022-03-19 14:32:26  阅读:192  来源: 互联网

标签:life name Python self value 2021 Animal python3 def


def drink(self):

print ("%s 喝 " %self.name)

def shit(self):

print ("%s 拉 " %self.name)

def pee(self):

print ("%s 撒 " %self.name)

class Cat(Animal):

def init(self, name):

self.name = name

self.breed = ‘猫’

def cry(self):

print(‘喵喵叫’)

class Dog(Animal):

def init(self, name):

self.name = name

self.breed=‘狗’

def cry(self):

print(‘汪汪叫’)

######### 执行

c1 = Cat(‘小白家的小黑猫’)

c1.eat()

c2 = Cat(‘小黑的小白猫’)

c2.drink()

d1 = Dog(‘胖子家的小瘦狗’)

d1.eat()

使用继承来重用代码比较好的例子

在开发程序的过程中,如果我们定义了一个类A,然后又想新建立另外一个类B,但是类B的大部分内容与类A的相同时

我们不可能从头开始写一个类B,这就用到了类的继承的概念。

通过继承的方式新建类B,让B继承A,B会‘遗传’A的所有属性(数据属性和函数属性),实现代码重用

‘’’

遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939

寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!

‘’’

class Animal:

‘’’

人和狗都是动物,所以创造一个Animal基类

‘’’

def init(self, name, aggressivity, life_value):

self.name = name # 人和狗都有自己的昵称;

self.aggressivity = aggressivity # 人和狗都有自己的攻击力;

self.life_value = life_value # 人和狗都有自己的生命值;

def eat(self):

print(’%s is eating’%self.name)

class Dog(Animal):

pass

class Person(Animal):

pass

egg = Person(‘egon’,10,1000)

ha2 = Dog(‘二愣子’,50,1000)

egg.eat()

ha2.eat()

提示:用已经有的类建立一个新的类,这样就重用了已经有的软件中的一部分设置大部分,大大生了编程工作量,这就是常说的软件重用,不仅可以重用自己的类,也可以继承别人的,比如标准库,来定制新的数据类型,这样就是大大缩短了软件开发周期,对大型软件开发来说,意义重大。

5.类的派生

当然子类也可以添加自己新的属性或者在自己这里重新定义这些属性(不会影响到父类),需要注意的是,一旦重新定义了自己的属性且与父类重名,那么调用新增的属性时,就以自己为准了。

class Animal:

‘’’

人和狗都是动物,所以创造一个Animal基类

‘’’

def init(self, name, aggressivity, life_value):

self.name = name # 人和狗都有自己的昵称;

self.aggressivity = aggressivity # 人和狗都有自己的攻击力;

self.life_value = life_value # 人和狗都有自己的生命值;

def eat(self):

print(’%s is eating’%self.name)

class Dog(Animal):

‘’’

狗类,继承Animal类

‘’’

def bite(self, people):

‘’’

派生:狗有咬人的技能

:param people:

‘’’

people.life_value -= self.aggressivity

class Person(Animal):

‘’’

人类,继承Animal

‘’’

def attack(self, dog):

‘’’

派生:人有攻击的技能

:param dog:

‘’’

dog.life_value -= self.aggressivity

egg = Person(‘egon’,10,1000)

ha2 = Dog(‘二愣子’,50,1000)

print(ha2.life_value)

print(egg.attack(ha2))

print(ha2.life_value)

注意:像ha2.life_value之类的属性引用,会先从实例中找life_value然后去类中找,然后再去父类中找…直到最顶级的父类。

在子类中,新建的重名的函数属性,在编辑函数内功能的时候,有可能需要重用父类中重名的那个函数功能,应该是用调用普通函数的方式,即:类名.func(),此时就与调用普通函数无异了,因此即便是self参数也要为其传值.

在python3中,子类执行父类的方法也可以直接用super方法.

(1)supper

‘’’

遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939

寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!

‘’’

class A:

def hahaha(self):

print(‘A’)

class B(A):

def hahaha(self):

super().hahaha()

#super(B,self).hahaha()

#A.hahaha(self)

print(‘B’)

a = A()

b = B()

b.hahaha()

super(B,b).hahaha()

(2)人狗大战

class Animal:

‘’’

人和狗都是动物,所以创造一个Animal基类

‘’’

def init(self, name, aggressivity, life_value):

self.name = name # 人和狗都有自己的昵称;

self.aggressivity = aggressivity # 人和狗都有自己的攻击力;

self.life_value = life_value # 人和狗都有自己的生命值;

def eat(self):

print(’%s is eating’%self.name)

class Dog(Animal):

‘’’

狗类,继承Animal类

‘’’

def init(self,name,breed,aggressivity,life_value):

super().init(name, aggressivity, life_value) #执行父类Animal的init方法

self.breed = breed #派生出了新的属性

def bite(self, people):

‘’’

派生出了新的技能:狗有咬人的技能

:param people:

‘’’

people.life_value -= self.aggressivity

def eat(self):

Animal.eat(self)

#super().eat()

print(‘from Dog’)

class Person(Animal):

‘’’

人类,继承Animal

‘’’

def init(self,name,aggressivity, life_value,money):

#Animal.init(self, name, aggressivi

ty, life_value)

#super(Person, self).init(name, aggressivity, life_value)

super().init(name,aggressivity, life_value) #执行父类的init方法

self.money = money #派生出了新的属性

def attack(self, dog):

‘’’

派生出了新的技能:人有攻击的技能

:param dog:

‘’’

dog.life_value -= self.aggressivity

def eat(self):

#super().eat()

Animal.eat(self)

print(‘from Person’)

egg = Person(‘egon’,10,1000,600)

ha2 = Dog(‘二愣子’,‘哈士奇’,10,1000)

print(egg.name)

print(ha2.name)

egg.eat()

通过继承建立了派生类与基类之间的关系,它是一种’是’的关系,比如白马是马,人是动物。

当类之间有很多相同的功能,提取这些共同的功能做成基类,用继承比较好,比如教授是老师。

class Teacher:

… def init(self,name,gender):

… self.name=name

… self.gender=gender

… def teach(self):

… print(‘teaching’)

class Professor(Teacher):

… pass

现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。

分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习


init(self,name,gender):

… self.name=name

… self.gender=gender

… def teach(self):

… print(‘teaching’)

class Professor(Teacher):

… pass

现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。

分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习

标签:life,name,Python,self,value,2021,Animal,python3,def
来源: https://blog.csdn.net/m0_67598738/article/details/123594375

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有