一.继承
python中类与类之间具有继承关系,其中被继承的类称为父类或者基类,继承的类称为子类或者派生类。
子类在继承父类时,会自动拥有父类中的方法和属性
1.单继承
指的是子类只继承一个父类,其语法格式如下:
class 子类(父类)
定义一个表示两栖动物的父类father和一个青蛙的子类son
代码如下(示例):
#
class Father(object):
name = "两栖动物"
def atm(self):
print("幼年用鳃呼吸")
print("成年用肺兼皮肤呼吸")
class Son(Father):
def srt(self):
print(f"青蛙是{self.name}")
print("我会嘎嘎叫")
father=Father()
son=Son()
print(Son.name)
Father.atm()
Son.srt()
@@@代码在此处运行出现了TypeError: Son.srt() missing 1 required positional argument: 'self'有读者知道问题所在的话希望能够评论指点一下,谢谢
2.多继承
多继承指一个子类继承多个父类,其语法格式如下:
class 子类(父类A,父类B,...)
定义English,Math类与studentlei,使student类继承english类与math类
代码如下(示例):
#
class eng:
name="李磊"
def eng_know(self):
print("具备英语知识")
class math:
def math_know(self):
print("具备数学知识")
class student(eng,math):
def study(self):
print("具备双能力")
Eng=eng()
Student=student()
math.math_know("f")
student.study("dd")
print(eng.name)
3.方法的重写
子类可以继承父类的属性和方法,若父类的方法不能后满足子类的要求,子类可以重写父类的方法以实现理想的功能。
父类的定义如下:
class father:
def special(self):
print("猫屎咖啡")
子类定义:
class son(father):
name="猫"
def special(self):
print(f"{self.name} 猫屎哪里来")
print(f"{self.name}猫屎那里去")
像如上的代码在父类中定义的方法special在子类中被重新定义了一下
4.super()
如果子类重写了父类的方法,但仍希望调用父类的方法,那么就使用super()的方法
super().方法名()
在此段代码中 super()是对父类中的方法进行调用,虽然在子类中已经对方法其重新定义
其中isinstance()是对象之间的判断
描述
Python中的 isinstance() 函数,是Python中的一个内置函数,用来判断一个函数是否是一个已知的类型,类似 type()。
语法
isinstance(object,classinfo)
参数:
object : 实例对象。
classinfo : 可以是直接或者间接类名、基本类型或者由它们组成的元组。
issubclass() 方法
用于判断参数 class 是否是类型参数 classinfo 的子类。
语法
issubclass(class, classinfo)
参数
- class -- 类。
- classinfo -- 类。类被认为是自身的参数
5.多态
在python,多态指在不考虑对象类型的情况下使用对象。相比于强类型,python更喜欢“鸭子类型”
python中并不需要显示指定对象的类型,只需对象有预期的方法和表达式操作符,就可以使用对象
#多态 不用考虑数据的类型
class Animal:#父类
def move(self):
pass#相当于占空行的作用
class Rabit(Animal):#子类
def move(self):
print("兔子·蹦蹦跳跳")
class Snail(Animal):#子类
def move(self):
print("蜗牛PAYA")
def Test(obj):#针对不同的对象可以调用相同的
obj.move()
animal=Animal()
rabit=Rabit()
snail=Snail()
不用像c语言那样,声明函数的类型
总结
上一次我们所说到的访问权限问题上:
def_info(self):是私有方法,不可以在公有域中调用,但我们用了公有的方法间接调用私有方法是可行的。
def_info()self:
def get_weight(self):
self._info