python基础——面向对象

一、类的基本使用

1.定义
class 类名称
	类的属性(即定义在类中的变量)
	类的行为(即定义在类中的函数)
2.使用 对象=类名称

class Student:
	name = None
	age = None
	def say_hi(self):
		print(self.name)

二、成员方法

定义时需要写slef,调用时不需要
def 方法名(self,参数1,参数2,...):   //self表示类自身
	方法体

三、构造方法

__init__()方法,称之为构造方法
def __init__(self,name,age,tel):
	self.name = name
	self.age = age
	self.tel = tel

四、类内置方法

  • init 构造方法,是Python类内置的方法之一
  • 这些内置的类方法,各自有各自特殊的功能,这些内置方法我们称之为:魔术方法。
  • 一般形式_xxx_
  • 常见魔术方法:
    在这里插入图片描述
  • _str_
    一般print(student)打印的是student的内存地址,通过__str__控制将student变成字符串打印的东西。像java中的toString()
def __str__(self):
	return f"Student类对象:name:{self.name}"
  • _lt_(小于写了自动能判别大于,即小于和大于写一个,小于等于和大于等于写一个)
  • 同理还有_le_,_gt_,_ge_
    通过改造两个对象就能比大小
def __lt__(self,other):
	return self.age < other.age

五、封装

私有成员变量:变量名以__开头(两个下划线)
私有成员方法:方法名以__开头(两个下划线)

__name = "BUAA"

六 、继承

1、单继承

class 类名(父类名):
	类内容体

在这里插入图片描述

2、多继承

class 类名(父类1,父类2,父类3,...):
	类内容体
	//若这个类没有其他功能,内容体为空,此时需要写pass占位
  • 多个父类中,如果有同名的成员,那么默认以继承顺序(从左到右)为优先级。即:先继承的保留,后继承的被覆盖

3、复写

直接重写即可。
在这里插入图片描述

  • 一旦复写父类成员,那么类对象调用成员的时候,就会调用复写后的新成员
  • 如果需要使用被复写的父类的成员,需要特殊的调用方式
1.调用父类成员
使用成员变量:父类名.成员变量
使用成员方法:父类名.成员方法(self)
2.使用super()调用父类成员
使用成员变量:super().成员变量
使用成员方法:super().成员方法()

在这里插入图片描述

七、类型注解

1、概念

  • Python在3.5版本的时候引入了类型注解以方便静态类型检查工具,IDE等第三方工具。
  • 类型注解:在代码中涉及数据交互的地方提供数据类型的注解(显式的说明)
  • 主要功能:
    • 帮助第三方IDE工具(如PyCharm)对码进行类型推断,协助做代码提示
    • 帮助开发者自身对变量进行类型注释
  • 支持:
    • 变量的类型注解
    • 函数(方法)形参列表和返回值的类型注解
      在这里插入图片描述

2、方式1:变量:类型

1.变量设置类型注解
	var_t:int =10
	var_2:float = 3.1415926
	var_3:bool = True
	var 4:str ="itheima'
2.类对象类型注解
	class Student:
		pass
	stu: Student = Student()
3.基础容器类型注解
	my_list:ist=[1,2,3]
	my_tuple:tuple=(1,2,3)
	my_set:set={1,2,3}
	my_dict: dict={"itheima":666}
	my_str: str= "itheima"
4.容器类型详细注解
元组类型设置类型详细注解,需要将每一个元素都标记出来
字典类型设置类型详细注解,需要两个类型,第一个是key第二个是value
	my_list:1ist[int]=[1,2,3]
	my_tuple: tuple[str,int, bool]=("itheima",666,True)
	my_set:set[int]={l,2,3}
	my_dict: dict[str,int]={"itheima":666}
5.函数(方法)类型注解——形参注解
def 函数名(形参名:类型,形参名:类型,....)
5.函数(方法)类型注解——返回值注解
def 函数名(形参名:类型,形参名:类型,....)->返回值类型
6.union混合类型
my_list:list[union[str, int]]=[1,2,"itheima", "itcast"]
my_dict: dict[str, union[str, int]]= {"name":"周杰轮","age": 31}
def func(data: unionlint,str])-> union[int, str]:
	pass

3、方式2:# type:类型

var_1 = random.randint(1,10)		# type: int
var_2 = json.loads(data)			# type: dict[str, int]
var_3 = func()						# type: student

4、注意点

  • 类型注解只是提示作用,在编译中并不会看,因此不遵守是不会报错的

八、多态

形参接收父类对象,实际是传入父类的子类对象进行工作。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值