本文概述
- Python多层次继承
- Python多重继承
- issubclass(s??ub, sup)方法
- isinstance(obj, class)方法
- 方法覆盖
- python中的数据抽象
在继承中, 子类获取属性, 并可以访问父类中定义的所有数据成员和函数。子类也可以将其特定实现提供给父类的功能。在本教程的这一部分中, 我们将详细讨论继承。
在python中, 派生类可以通过仅在派生类名称后面的括号中提及基类来继承基类。请考虑以下语法, 以将基类继承到派生类中。
文章图片
句法
class derived-class(base class): <
class-suite>
一个类可以通过在括号内提及所有类来继承多个类。考虑以下语法。
句法
class derive-class(<
base class 1>
, <
base class 2>
, ..... <
base class n>
): <
class - suite>
例子1
class Animal:def speak(self):print("Animal Speaking")#child class Dog inherits the base class Animalclass Dog(Animal):def bark(self):print("dog barking")d = Dog()d.bark()d.speak()
输出
dog barkingAnimal Speaking
Python多层次继承 像其他面向对象的语言一样, 在python中也可以进行多级继承。当派生类继承另一个派生类时, 将归档多级继承。对于使用python归档多级继承的级别数没有限制。
文章图片
下面给出了多级继承的语法。
句法
class class1: <
class-suite>
class class2(class1): <
class suite>
class class3(class2): <
class suite>
..
例子
class Animal:def speak(self):print("Animal Speaking")#The child class Dog inherits the base class Animalclass Dog(Animal):def bark(self):print("dog barking")#The child class Dogchild inherits another child class Dogclass DogChild(Dog):def eat(self):print("Eating bread...")d = DogChild()d.bark()d.speak()d.eat()
输出
dog barkingAnimal SpeakingEating bread...
Python多重继承 Python为我们提供了在子类中继承多个基类的灵活性。
文章图片
下面给出了执行多重继承的语法。
句法
class Base1: <
class-suite>
class Base2: <
class-suite>
...class BaseN: <
class-suite>
class Derived(Base1, Base2, ...... BaseN): <
class-suite>
例子
class Calculation1:def Summation(self, a, b):return a+b;
class Calculation2:def Multiplication(self, a, b):return a*b;
class Derived(Calculation1, Calculation2):def Divide(self, a, b):return a/b;
d = Derived()print(d.Summation(10, 20))print(d.Multiplication(10, 20))print(d.Divide(10, 20))
输出
302000.5
issubclass(s??ub, sup)方法 issubclass(s??ub, sup)方法用于检查指定类之间的关系。如果第一个类是第二个类的子类, 则返回true, 否则返回false。
考虑以下示例。
例子
class Calculation1:def Summation(self, a, b):return a+b;
class Calculation2:def Multiplication(self, a, b):return a*b;
class Derived(Calculation1, Calculation2):def Divide(self, a, b):return a/b;
d = Derived()print(issubclass(Derived, Calculation2))print(issubclass(Calculation1, Calculation2))
输出
TrueFalse
isinstance(obj, class)方法 isinstance()方法用于检查对象和类之间的关系。如果第一个参数(即obj)是第二个参数(即class)的实例, 则返回true。
考虑以下示例。
例子
class Calculation1:def Summation(self, a, b):return a+b;
class Calculation2:def Multiplication(self, a, b):return a*b;
class Derived(Calculation1, Calculation2):def Divide(self, a, b):return a/b;
d = Derived()print(isinstance(d, Derived))
输出
True
方法覆盖 我们可以在子类中提供父类方法的一些特定实现。当在子类中使用某些特定实现定义父类方法时, 该概念称为方法重写。在子类中需要对父类方法进行不同定义的情况下, 我们可能需要执行方法重写。
考虑以下示例, 以在python中执行方法覆盖。
例子
class Animal:def speak(self):print("speaking")class Dog(Animal):def speak(self):print("Barking")d = Dog()d.speak()
输出
Barking
方法重写的实际示例
class Bank: def getroi(self):return 10;
class SBI(Bank):def getroi(self):return 7;
class ICICI(Bank):def getroi(self):return 8;
b1 = Bank()b2 = SBI()b3 = ICICI()print("Bank Rate of interest:", b1.getroi());
print("SBI Rate of interest:", b2.getroi());
print("ICICI Rate of interest:", b3.getroi());
输出
Bank Rate of interest: 10SBI Rate of interest: 7ICICI Rate of interest: 8
python中的数据抽象 抽象是面向对象编程的重要方面。在python中, 我们还可以通过将双下划线(___)作为要隐藏的属性的前缀添加来执行数据隐藏。此后, 该属性将无法通过该对象在类外部显示。
考虑以下示例。
例子
class Employee:__count = 0;
def __init__(self):Employee.__count = Employee.__count+1def display(self):print("The number of employees", Employee.__count)emp = Employee()emp2 = Employee()try:print(emp.__count)finally:emp.display()
【Python如何使用继承()】输出
The number of employees 2AttributeError: 'Employee' object has no attribute '__count'
推荐阅读
- Python如何创建新数据库()
- Python魔术方法介绍
- python|用Python制作可视化报表,这也太快了
- 可视化|50套可视化报表模板直接用,做报告不用愁了!快收藏
- 一篇文章搞懂android存储目录结构
- rime 同文输入法 安卓系统
- Arguments 对象call()与apply()
- (十四)Android NDK混淆
- Android组件体系之Activity启动模式解析