> 文章列表 > Python学习笔记--面向对象

Python学习笔记--面向对象

Python学习笔记--面向对象

未完待续。。。。。

(一)面向对象的基本概念

        我们之前学习的编程方式就是面向过程

        面相过程和面相对象,是两种不同的编程方式

        对比面向过程的特点,可以更好地了解什么是面向对象

1.1过程和函数

        过程是早期的一个编程概念

        过程类似于函数,只能执行,但是没有返回值

        函数不仅能执行,还可以返回结果

 1.2面相过程和面相对象基本概念

1)面相过程——怎么做?

        1.把完成某一个需求的所有步骤从头到尾逐步实现

        ⒉.根据开发需求,将某些功能独立的代码封装成一个又一个函数

        3.最后完成的代码,就是顺序地调用不同的函数

特点

        1.注重步骤与过程,不注重职责分工

        2.如果需求复杂,代码会变得很复杂

        3.开发复杂项目,没有固定的套路,开发难度很大!

 

 

 

# 1.设计一个类(类比生活中:设计一张登记表)
class Student:name=None  # 记录学生姓名gender=None # 记录学生性别nationality=None # 记录学生国籍native_place=None # 记录学生籍贯age=None # 记录学生年龄
# 2.创建一个对象(类比生活中:打印一张登记表)
stu_1=Student()
# 3.对象属性进行赋值(类比生活中:填写表单)
stu_1.name = "林军杰"
stu_1.gender = "男"
stu_1.nationality = "中国"
stu_1.native_place = "山东省"
stu_1.age = 31
# 4.获取对象中记录的信息
print(stu_1.name )
print(stu_1.gender)
print(stu_1.nationality)
print(stu_1.native_place)
print(stu_1.age)

 

 

 (二)类的成员方法

1.类的定义和使用

在上一节中,我们简单了解到可以使用类去封装属性,并基于类创建出一一个个的对象来使用。
现在我们来看看类的使用语法:

class 类名称:类的属性类的行为

●class是关键字, 表示要定义类了
●类的属性,即定义在类中的变量(成员变量)
● 类的行为, 即定义在类中的函数(成员方法)
创建类对象的语法对象=类名称()

 

类内部的函数叫(成员)方法,不叫函数。

成员方法的定义语法

 

# 定义一个带有成员方法的类
class Student:name= Nonedef say_hi(self):print(f"大家好啊,我是{self.name},欢迎大家多多关照")stu1 = Student()stu1.name="王五"stu1.say_hi()
# 定义一个带有成员方法的类
class Student:name= None# def say_hi(self):#     print(f"大家好啊,我是{self.name},欢迎大家多多关照")def say_hi(self,msg):print(f"大家好啊,我是{self.name},{msg}")stu1 = Student()stu1.name="王五"stu1.say_hi("哎哟不错哟")

(三)类和对象

基于类创建对象的语法:对象名=类名称()
为什么非要创建对象才能使用呢?
类只是一种程序内的“设计图纸”,需要基于图纸生产实体(对象),才能正常工作,面向对象编程!!!! 

设计类——就是让类干活! 

下面代码有声音欧 耳机党小心!!!!! 

if __name__ == '__main__':# 设计一个闹钟类class Clock:id = None # 序列化price = None  # 价格def ring(self):import winsoundwinsound.Beep(2000,3000)# 构建2个闹钟对象并让其工作clock1 = Clock()clock1.id = "003032"clock1.price = 19.99print(f"闹钟ID: {clock1.id}, 价格: {clock1.price}")clock1.ring()#######################################clock2 = Clock()clock2.id = "003033"clock2.price = 21.99print(f"闹钟ID: {clock2.id}, 价格: {clock2.price}")clock2.ring()

 (四)构造方法

 

之所以可以省略是因为方法中,self.属性名=属性名起到了给成员变量声明且赋值,写了的话那就只是赋值 

"""
演示类的构造方法
"""
# 演示使用构造方法对成员变量进行赋值
# 构造方法的名称__init__
if __name__ == '__main__':class Student:def __init__(self, name,age, tel):self.name = nameself.age = ageself.tel = telprint("Student类创建了一个类对象")stu = Student("周杰轮",31, "18500006666")print(stu.name)print(stu.tel)print(stu.age)

 

 (五)魔术方法

 __ str __

if __name__ == '__main__':class Student:def __init__(self, name, age):self.name = name# 学生姓名self.age = age# 学生年龄# __ str__魔术方法def __str__(self):return f"Student类对象,name:{self.name}, age:{self.age}"stu = Student("周杰轮",31)print(stu)print(str(stu))

  __ lt __小于比较符号方法

if __name__ == '__main__':class Student:def __init__(self, name, age):self.name = name# 学生姓名self.age = age# 学生年龄# __ str__魔术方法def __str__(self):return f"Student类对象,name:{self.name}, age:{self.age}"#__lt__魔术方法.def __lt__(self,other):return self.age < other.agestu1 = Student("周杰轮",31)stu2 = Student("周轮", 3)print(stu1<stu2)print(stu1>stu2)

 _le_小于等于比较符号方法

if __name__ == '__main__':class Student:def __init__(self, name, age):self.name = name# 学生姓名self.age = age# 学生年龄# __ str__魔术方法def __str__(self):return f"Student类对象,name:{self.name}, age:{self.age}"#__lt__魔术方法.def __lt__(self,other):return self.age < other.age#__le__魔术方法.def __le__(self,one):return self.age<=one.agestu1 = Student("周杰轮",31)stu2 = Student("周轮", 35)print(stu1<=stu2)print(stu1>=stu2)

_eq_,比较运算符实现方法 

if __name__ == '__main__':class Student:def __init__(self, name, age):self.name = name# 学生姓名self.age = age# 学生年龄# __ str__魔术方法def __str__(self):return f"Student类对象,name:{self.name}, age:{self.age}"#__lt__魔术方法.def __lt__(self,other):return self.age < other.age#__le__魔术方法.def __le__(self,one):return self.age<=one.age#__eq__魔术方法.def __eq__(self, other):return self.age == other.agestu1 = Student("周杰轮",31)stu2 = Student("周轮", 31)print(stu1==stu2)