目录
初识对象
类的成员方法
类和对象
构造方法
魔术方法
__str__
__lt__
__le__
__eq__
封装
私有成员
继承
单继承
多继承
pass
复写
类型注解
1 变量的类型注解
方法1 使用:
方法2 注释
应用场景
2 函数(方法)的类型注解
3 混合类型注解
多态
初识对象
#设计一个类
class Student:name = Nonegender = Noneage =None
#创建一个对象
stu1 = Student()
#给对象赋值
stu1.name = "小明"
stu1.gender = "男"
stu1.age = 1
#获取对象中的信息
print(f"{stu1.name}")
print(f"{stu1.gender}")
print(f"{stu1.age}")
类的成员方法
方法:类内部的函数
函数:类外面的函数
self 表示类对象自身的意思
#定义一个带有成员方法的类
class Student:name = None #学生姓名def sayhi(self):print(f"大家好,我是{self.name},欢迎大家多多关照")def sayhi2(self,msg):print(f"大家好,我是{self.name},{msg}")#创建对象
stu = Student()
stu.name = "小明"
stu.sayhi2("嘿嘿")
#创建对象
stu2 = Student()
stu2.name = "小红"
stu2.sayhi2("咯咯咯")
类和对象
构造方法
#定义一个带有成员方法的类
class Student:name = None #学生姓名age = Nonetel = Nonedef __init__(self, name, age, tel):self.name = nameself.age = ageself.tel = telprint("Student类创建了一个类对象")stu1 = Student("小明",12,"15151259461")
print(stu1.name)
print(stu1.age)
print(stu1.tel)
魔术方法
类里面内置的方法
类里面内置的方法, 方法名字前后都有_
__str__
对象 转字符串
__lt__
比较大小 > <,返回true 或 false
#定义一个带有成员方法的类
class Student:name = None #学生姓名age = Nonedef __init__(self, name, age):self.name = nameself.age = agedef __lt__(self, other):return self.age < other.agestu1 = Student("小明",12)
stu2 = Student("小红",15)print(stu1 < stu2)
__le__
>= <= 比较 , 返回true 或 false
__eq__
比较对象是否相等
#定义一个带有成员方法的类
class Student:name = None #学生姓名age = Nonedef __init__(self, name, age):self.name = nameself.age = agedef __eq__(self, other):return self.age == other.agestu1 = Student("小明",12)
stu2 = Student("小红",12)print(stu1 == stu2)
封装
将现实世界的属性和行为 封装到类中, 描述为成员变量、成员方法
私有成员
变量名以__开头
方法名以__开头
私有对象无法被类对象使用,但是可以被其他成员使用
继承
单继承
class Mum:ear = "圆耳朵"face = "圆脸"def smile(self):print ("爱笑")class Baby(Mum):eye = "单眼皮"def english(self):print("英语学得好")bao = Baby()
print(bao.ear)
print(bao.face)
print(bao.eye)
bao.smile()
bao.english()
多继承
如果继承的重复了,继承的第一个父类优先级高 (左边的)
class Mum:face = "圆脸"def smile(self):print ("爱笑")class Dad:football = "会踢球"class Baby(Mum,Dad):eye = "单眼皮"def english(self):print("英语学得好")bao = Baby()
print(bao.face)
print(bao.eye)
bao.smile()
bao.english()
print(bao.football)
pass
复写
子类继承了父类的成员属性或成员方法,并重新定义
复写后如果想调用父类的成员, 有两种方法
类型注解
1 变量的类型注解
方法1 使用:
方法2 注释
应用场景
2 函数(方法)的类型注解
3 混合类型注解
类型太多了,Union帮助注解
#使用Union类型,必须先导包
from typing import Unionlist1:list[Union[int,str,bool]] = [1,"sun",2,True,3]def fun(data :Union[int,str,bool]) -> Union[int,str,bool]:pass
多态
抽象类
class Animal:def shout(self):passclass Dog(Animal):def shout(self):print("汪汪")class Cat(Animal):def shout(self):print("喵喵")#函数参数传入抽象父类对象
def jiao(animal:Animal):animal.shout()
#创建子类对象
dog = Dog()
cat = Cat()
jiao(dog)
jiao(cat)