【python】面向对象语言的特性

文章介绍了面向对象编程的三大特性——封装、继承和多态。封装是隐藏对象的属性和实现细节,通过接口访问。继承允许子类继承父类的属性和方法,可以重写父类方法。多态则是同一个方法在不同对象上有不同表现。此外,文章还讨论了Python中的类型注解,包括变量、函数和联合类型的注解,以及抽象类的概念和作用。
摘要由CSDN通过智能技术生成

面向对象语言的三大特性:封装、继承、多态
本文主要来介绍这三个特性

封装

封装:指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象的内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。

使用 class 关键字实现封装

C++ 语言中定义类形式:

class 类名{类的属性方法};

python 语言中定义类形式:

class 类名: (类的属性方法)

类的定义也就是实现一系列变量和方法的封装,用户并不需要知道方法内部如何实现,只需要知道调用哪个方法来实现自己的功能即可

继承

继承定义

python 语法规则中对于缩进格式要求十分的严格,在写代码时候一定要注意缩进格式

python 语言中继承语法:

class 类名(父类名):
\tab (注意缩进格式) 类的内容体

单继承

一个类继承自一个父类

在这里插入图片描述

多继承

一个类继承自多个父类

在这里插入图片描述

当多个父类中存在同名成员时候会怎样?

在这里插入图片描述

在这里注意是,谁先继承谁优先级高,因此优先访问到的是 Phone 类内的 producer 成员变量

pass 关键字

若一个类继承了父类中的成员变量以及成员方法,自己并不需要增加新的一些方法,而一个类又不能只有类的定义一行信息而没有类体存在,对于这种情况我们需要使用关键字 pass

在这里插入图片描述

在这里插入图片描述

继承下的方法重写

子类继承父类中的方法,但是对其内容又不满意,因此可以在自己的类中重新复写这些方法

在这里插入图片描述

但假若我们在子类中虽重写了父类中的方法,但我们在调用时候仍需要调用父类的方法,那要如何操作呢?

调用父类成员有两种方法

父类名.成员变量
父类名.成员方法(self)

在这里插入图片描述

使用 super() 调用父类成员
super().成员变量
super().成员方法

在这里插入图片描述

类型注解

Python 3.5 之后引入了类型注解,其作用就是让你可以明确的声明变量的类型;类型注解仅仅是提供给编辑器进行类型检查的机会,也就是起提示的作用,对 Python 程序的运行不会产生任何影响

变量类型注解

# 基础数据类型注解:

var1:int=10
var2:float=12.14
var3:str="zxcvbb"
var4:bool=True

# 类对象类型注解:
class Student:
    pass
stu: Student = Student()
# 基础容器类型注解:
my_list:list=[1,2,3]
my_tuple:tuple=(4,5,6)
my_set:set={1,2,3}
my_dict:dict={"cccc":666}
my_str:str="cccc"

# 导入相应的包信息

from typing import List, Dict,Tuple,Set

# 容器类型注解:
mu_list: List[int]=[1,2,3]
mu_tuple: Tuple[str,float,bool]=("xxx",13.14,True)
mu_set:Set[int]={1,2,3}
mu_dict:Dict[str,int]={"ccc":12}


alt + 回车 自动搜索当前调用函数相对应的包并帮助我们引入该包内容

同样我们也可以通过 注释方式进行标记类型 # type:类型

函数(方法)类型注解

对形参的类型注解

def 函数方法名(形参名:类型, 形参名:类型,…)
\tab pass

在这里插入图片描述

对返回值进行类型注解

def 函数方法名(形参名:类型, 形参名:类型,…) -> 返回值类型
\tab pass

在这里插入图片描述

Union 联合类型注解

from typing import Union 导入对应的包

注解写法:
Union[类型,类型,…]

# Union 类型注解

from typing import List,Dict,Union

my_list: List[Union[str,int]]=[1, 2, "xxx", "zzz"]

my_dict: Dict[str,Union[str,int]]={"name": "rose", "age":19}

# 函数注解
from typing import Union
def func(data:Union[int,str]) -> Union[int,str]:
    pass

多态

定义

实现一个方法,传入不同的对象会产生不同的结果

在这里插入图片描述

class Animal:     # 父类
    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        print("汪汪汪")

class Cat(Animal):
    def speak(self):
        print("喵喵喵")

def make_noise(animal:Animal):     # 统一使用的一个接口
    animal.speak()


dog=Dog()
cat=Cat()
make_noise(dog)
make_noise(cat)

在这里插入图片描述

抽象类

抽象类:函数的方法体是 空 – pass , 定义抽象方法,由子类来具体实现该方法体

在这里插入图片描述

抽象类的作用:

用于做顶层设计(设计标准),以便于子类进行具体的实现;是对子类的一种软性约束,要求子类必须复写(实现)父类中的抽象类方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值