类之间的继承关系:
八股文:
面向对象的编程带来的主要好处之一是代码的重用,实现各种重用的方法之一是通过继承机制。继承完全可以理解成类之间的父类和子类型关系。
继承概念:继承是类与类的一种关系,是一种子类与父类的关系,即爸爸与儿子,爸爸生个儿子,儿子继承爸爸的属性和方法。
如猫类,猫是动物;猫类继承于动物类,动物类为父类也是所有动物的基类;猫类是动物类的子类,也是动物类的派生类。
Python有单继承与多继承。单继承即子类继承于一个类,多继承即子类继承于多个类,多继承会比较少遇到,本章节主要讲单继承。
什么时候使用继承:假如我需要定义几个类,而类与类之间有一些公共的属性和方法,这时我就可以把相同的属性和方法作为基类的成员,而特殊的方法及属性则在本类中定义。这样子类只需要继承基类(父类),子类就可以访问到基类(父类)的属性和方法了,它提高了代码的可扩展性和重用行。
如:猫,狗 都属于动物,它们行为相似性高,都会叫,会吃,会喝,会拉,会撒娇。
Python类继承 注意事项:
- 在继承中基类的构造方法(__init__()方法)不会被自动调用,它需要在其派生类的构造方法中亲自专门调用。
- 在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量。而在类中调用普通函数时并不需要带上self参数
- Python 总是首先查找对应类的方法,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找。(先在本类中查找调用的方法,找不到才去基类中找)
class Animal:
def __init__(self,name,age,sex):
self.name=name
self.age=age
self.sex=sex
def eat(self):
print('%s正在吃饭!!'%self.name)
#类名后面加括号表示继承!
'''
当子类继承父类的时候,子类Person便可以使用父类Animal中所有的方法和属性!!!
不需要在重新去定义!!
'''
class Person(Animal):
def talk(self):
print('%s正在讲话!!'%self.name)
class Dog(Animal):
def chase(self):
print('%s正在追赶奔跑'%self.name)
p1=Person()

会进行报错!!
原因:当子类继承父类的时候,子类进行实例化一个具体对象,必须也要满足父类所需要的实例属性
问题:如何对父类方法和类属性进行重写?
简单的重写(重构父类中的方法):
直接在子类当中定义一个和父类相同的方法时,就会重写父类当中的方法
重写(重构父类中的类属性):
同样的,直接在子类当中定义一个和父类相同的类属性时,就会重写父类当中的方法
class Animal:
bu_animal='食肉动物'
def __init__(self,name,age,sex):
self.name=name
self.age=age
self.sex=sex
def eat(self):
print('%s正在吃饭!!'%self.name)
#类名后面加括号表示继承!
'''
当子类继承父类的时候,子类Person便可以使用父类Animal中所有的方法和属性!!!
不需要在重新去定义!!
'''
class Person(Animal):
bu_animal = '杂食动物'
def talk(self):
print('%s正在讲话!!'%self.name)
'''
简单的重写(重构父类中的方法):
直接在子类当中定义一个和父类相同的方法时,就会重写父类当中的方法
重写(重构父类中的类属性):
同样的,直接在子类当中定义一个和父类相同的类属性时,就会重写父类当中的方法
'''
def eat(self):
print('%s在优雅的进行吃饭'%self.name)
class Dog(Animal):
def chase(self):
print('%s正在追赶奔跑'%self.name)
'''
1、当子类继承父类的时候,子类进行实例化一个具体对象,必须也要满足父类所需要的实例属性
2、当调用方法的时候,也可以随意调用父类中的方法
'''
p1=Person('小李',20,'男')
d1=Dog('小贝',2,'公狗')
p1.eat()
d1.eat()
p1.talk()
d1.chase()
print(p1.bu_animal)
1 、什么是类?
def Dog(name,d_type):{
}
该部分其实就是一个类,类中定义了这些对象的都具备的属性、共同的方法
2、什么是对象?
说简单一点,对象就是实实在在的东西!!---实体
d3=Dog('tiger','泰迪')
d4=Dog('贝贝','柯基')
d3,d4相当于现实世界当中实实在在存在的实体,即就叫做对象!!
3、什么叫做实例化?
说简单一点就是模板调用的过程(类的调用过程)就叫做实例化!!--实例化之后产生的东西就叫做对象!
4、什么是封装?
def Dog(name,d_type):
dog1 = {
'name': name,
'd_type': d_type,
#'attack': 18,
'year': 10
}
if d_type in attack:
Dog["attack"]=attack[d_type]
else:
dog1["attack"]=15
return dog1
假设在这里我创建了一个狗类的方法和一个人类的方法,所谓封装可以简单的理解为:狗类的方法人理论上是不运行人去调用的!
多态和继承我会在后续代码中进行详细讲解!!
类的基本语法:
1、为了编程的规范:python中类首字母应该大写
直接就可以在类中定义属性
像下面这种在类中直接定义的属性,叫做类属性、类变量(是所有对象都可以公共共享的一个属性)
类中的方法:第一个参数必须是self(也可以是其他名字)---这里的self代表实例本身
class Dog:
#直接就可以在类中定义属性
# 像下面这种在类中直接定义的属性,叫做类属性、类变量
d_type='泰迪'
def hello(self): #方法:第一个参数必须是self(也可以是其他名字)---这里的self代表实例本身
print('Hello!,I am a',self.d_type)
当类写完之后,我们需要对类进行实例化,将其变成一个真正的实体,对象---python中一切皆对象
本文介绍Python中的类与继承概念,包括如何定义类、实例化对象、实现单继承和多继承等。并解释了继承机制、类属性与实例属性的区别、方法重写等内容。
2568

被折叠的 条评论
为什么被折叠?



