【Python学习】—面向对象(九)

【Python学习】---面向对象(九)

一、初识对象





类中不仅可以定义属性来记录数据,也可以定义函数,用来记录行为,类中定义的属性(变量)我们称之成员变量,类中定义的行为(函数),我们称之为成员方法。

成员方法的定义语法


self的作用

  • 表示对象本身的意思
  • 只有通过self,成员方法才能访问类的成员变量
  • self出现在形参列表中,但是不占用参数位置,无需例会
bash 复制代码
class Student:
      name=None

      def say_hi(self):
          print(f"大家好,我是{self.name},欢迎大家多多关照")

stu=Student()
stu.name="张三"
stu.say_hi()

二、基于类创建对象

bash 复制代码
class Clock:
    id=None
    price=None

    def ring(self):
        import winsound
        winsound.Beep(2000, 3000)



clock1=Clock()
clock1.id='1112'
clock1.price=233
print(f"闹钟ID:{clock1.id},价格{clock1.price}")
clock1.ring()

clock2=Clock()
clock2.id='21122'
clock2.price=99.00
print(f"闹钟ID:{clock2.id},价格{clock2.price}")
clock2.ring()

三、构造方法

Python类可以使用:_init_()方法,称为构造方法

可以实现:

  • 在创建类对象(构造类)的时候,会自动执行
  • 在创建类对象( 构造类)的时候,将传入的参数自动传递给_init_方法使用
bash 复制代码
class Student:
    name = None
    age=None
    tel=None

    def __init__(self,name,age,tel):
        self.name=name
        self.age=age
        self.tel=tel
        print("student类创建了一个对象")

stu=Student("Cai",20,'13222222222')
print(stu.name)
print(stu.age)
print(stu.tel)

构造方法注意事项


四、内置方法

__init__构造方法,是Python类内置的方法之一,这些内置的类方法,各自有各自特殊的功能,这些内置方法我们称为魔术方法


bash 复制代码
class Student:
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def __lt__(self,other):
        return self.age<other.age
stu1=Student("张三",20)
stu2=Student("李四",17)

print(stu1<stu2)
print(stu1>stu2)
bash 复制代码
class Student:
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def __le__(self,other):
        return self.age <= other.age
stu1=Student("张三",20)
stu2=Student("李四",20)

print(stu1<=stu2)#True
print(stu1>=stu2)#True
bash 复制代码
class Student:
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def __eq__(self,other):
        return self.age == other.age
stu1=Student("张三",20)
stu2=Student("李四",20)

print(stu1==stu2)#True

总结

五、封装

面向对象的三大特性:继承、封装、多态

封装


私有成员

私有成员无法被类对象使用,但是可以被其他的成员使用

继承


bash 复制代码
class 类名(父类名):
  内容体

pass的关键字

pass是一个普通的占位符,保证函数或者类定义的完整性,表示无内容、空的意思

复写

在子类中重新定义同名的属性或方法

六、类型注解语法


bash 复制代码
var_1: int=10
var_2: str="caicai"
var_3: bool=True

class Student:
    pass
stu:Student=Student()

my_list:list=[1,2,3]
my_tuple:tuple=(1,2,3)
my_dict:dict={"caicai":123}


my_list:list[int]=[1,23,3]
my_tuple:tuple[int,str,bool]=(1,"cai",True)


函数类型注解

七、多态

多态指的是:多种状态,即完成某个行为时,使用不同的对象会得到不同的状态


相关推荐
码兄科技6 分钟前
Java AI智能体开发实战:从零构建智能对话系统指南
java·开发语言·人工智能
Drone_xjw1 小时前
从 GDB 到 CDB:C/C++ 程序调试的两把“手术刀”
c语言·开发语言·c++
r_oo_ki_e_1 小时前
Java Map 集合学习笔记
java·笔记·学习
SL-staff2 小时前
智慧园区2000+设备统一管理:JVS-IoT如何降低运维成本40%
java·开发语言·物联网·智慧园区·设备管理·运维优化·jvs-iot
聪明的一休丶2 小时前
VLLM v0.24.0 版本深度解析:新引擎、新架构与大规模服务全家桶升级
python·架构·vllm
笨鸟先飞的橘猫3 小时前
skynet——sharetable学习
学习·skynet
liuyicenysabel3 小时前
大模型学习笔记 · 第八篇 · 进阶:偏好对齐与多卡训练
人工智能·笔记·学习
2zcode3 小时前
基于MATLAB图像处理的饮料瓶灌装液位检测系统设计与实现
开发语言·图像处理·matlab
万亿少女的梦1684 小时前
基于Python的高考志愿填报辅助系统设计与实现
java·spring boot·python·mysql·vue
必须得开心呀5 小时前
QT解决中文乱码问题
开发语言·qt