类和对象
面向对象编程–说白就是让对象干活
创建类:class 类名:
创建类对象 对象名 = 类名()
构造方法
1、构造方法的名称是__init__
2、构造方法的作用?
构建类对象的时候会自动运行
构建类对象的传参会传递给构造方法,借此特性可以给成员变量赋值
3、注意事项
构造方法不要忘记self关键字
在方法内使用成员变量需要使用self关键字
魔术方法
在创建对象时,自动调用魔术方法函数。
06封装
1、封装的概念是?
将现实世界事物在类中描述为属性和方法,极为封装。
2、什么是私有成员?为什么需要私有成员?
现实事物有部分属性和行为是不公开对使用者开放的,同样在类中描述属性和方法的时候也需要达到这个要求,就需要定义私有成员了。
3、如何定义私有成员
私有成员包括 :私有成员变量、私有成员方法
私有成员变量定义方式:变量名以__开头(2个下划线)
私有成员方法定义方式:方法名以__开头(2个下划线) 即可完成私有成员的设置
4、私有成员的访问限制?
类对象无法访问私有成员
类中的其他成员可以访问私有成员
5、私有成员有什么实际意义吗?
在类中提供仅供内部使用的属性和方法,而不对外开放(类对象无法使用)
class Phone:
__current_voltage = 1
def __keep_single_core(self):
print("让CPU以单核模式运行")
def call_by_5g(self):
if self.__current_voltage >= 1:
print(" 5g通话已开启")
else:
print("5g通话未开启")
phone1 = Phone()
phone1.call_by_5g()
封装的课后练习题讲解
class Phone:
__is_5g_enable = False
def __check_5g(self):
if(self.__is_5g_enable):
print("5g开启")
else:
print("5g关闭,使用4g网络")
def call_by_5g(self):
self.__check_5g()
print("正在通话中")
phone1 = Phone()
phone1.call_by_5g()
---------------------------------------------------------
5g关闭,使用4g网络
正在通话中
继承的基础语法
1、什么是继承
继承就是一个类、继承另外一个类的成员变量和成员方法
语法:
class 子类(父类,父类,…,父类):
类内容体
子类构建的类对象可以有自己的成员变量和成员方法,也可以使用父类的成员变量和成员方法
2、单继承和多继承
单继承:一个子类继承了一个父类
多继承:一个子类继承了多个父类
同名优先级是按照左边的先来,谁先继承,谁的优先级最高
3、pass关键字的作用是什么?
pass是占位语句,用来保证函数(方法)或类定义的完整性,表示无内容,空的意思
class Phone:
IMEI = "apple"
producer = "Itcast"
def call_by_5g(self):
print("5g通话")
class NFCReader:
nfc_type = "第五代"
producer = "HM"
def read_card(self):
print("读取NFC卡")
def write_card(self):
print("写入NFC卡")
class RemoteControl:
rc_type = "红外遥控"
def control(self):
print("红外遥控开启")
class MyPhone(Phone,NFCReader,RemoteControl):
pass
my1 = MyPhone()
my1.call_by_5g()
my1.read_card()
my1.write_card()
my1.control()
print(my1.producer)
复写父类成员和调用父类成员
1、复写表示
对父类的成员属性和成员方法进行重新定义
2、复写的语法:
在子类中重新实现同名成员方法或成员属性即可
3、在子类中,如何调用父类成员
方式1:
父类名.成员变量
父类名.成员方法(self)
方式2:使用super( )调用父类成员,
super( ).成员变量
super( ).成员方法( )
注意:只可以在子类内部调用父类的同名成员,子类的实体类对象调用的话默认是调用子类复写的。
变量的类型注解
1、类型注解的语法:变量:类型
2、类型注解可以帮助Pycharm等开发工具对代码做类型推断协助做代码提示
3、类型注解支持:变量的类型注解,函数的形参和返回值的类型注解
函数和方法类型注解
1、函数(方法)可以为哪里添加注解?
形参的类型注解
返回值的类型注解
2、函数(方法)的类型注解语法?
def 函数名(形参:类型,… ,形参:类型) - > 返回值类型:
pass
返回值类型注解的符号使用:- >
Union联合类型注解
1、什么是Union类型
使用Union可以定义联合类型注解
2、Union的使用方式
导包:from typing import Union
使用:Union[类型1,类型2,类型n]
多态
1、什么是多态?
多态指的是同一个行为,使用不同的对象获得的不同的状态
如:定义函数,通过类型注解声明需要父类对象,实际传入子类对象进行工作,从而获得不同的工作状态。
2、什么是抽象类(接口)
包含抽象方法的类,称为抽象类。抽象方法是指没有具体实现的方法(pass)
3、抽象类的作用
用于做顶层设计(设计标准 ),以便子类做具体实现
也是对子类的一种软性约束,要求子类必须复写(实现)父类的一些方法
并且配合多态去使用, 就可以获得不同的工作状态
class AC:
def cool_wind(self):
"""制冷"""
pass
def hot_wind(self):
"""制热"""
pass
def swing_l_r(self):
"""左右摆风"""
pass
class Midea_AC(AC):
def cool_wind(self):
print("美的空调制冷")
def hot_wind(self):
print("美的空调制热")
def swing_l_r(self):
print("美的空调左右摆风")
my_mideal = Midea_AC()
my_mideal.hot_wind()
my_mideal.swing_l_r()
my_mideal.cool_wind()