初识对象
生活中数据的组织
学校开学,要求学生填写自己的基础信息,一人发一张白纸,让学生自己填
改为登记表,打印出来让学生自行填写:
程序中数据的组织
在程序中简单使用变量来记录学生信息
使用变量记录数据太乱了。
- 如果程序中也和生活中一样 可以设计表格
- 可以将设计的表格打印出来
- 可以将打印好的表格供人填写内容
那么数据的组织就非常方便了。
使用对象组织数据
在程序中是可以做到和生活中那样,设计表格、生产表格、填写表格的组织形式的。
- 在程序中设计表格,我们称之为:设计类(class)
class Student: name = None # 记录学生姓名
- 在程序中打印生产表格,我们称之为:创建对象
# 基于类创建对象 stu_1 = Student() stu_2 = Student()
- 在程序中填写表格,我们称之为:对象属性赋值
stu_1.name = "周杰伦" # 为学生1对象赋予名称属性值 stu_2.name = "张三" # 为学生2对象赋予名称属性值
总结:
1. 生活中或是程序中,我们都可以使用设计表格、生产表格、填写表格的形式组织数据
2. 进行对比,在程序中:
- 设计表格,称之为:设计类(class)
- 打印表格,称之为:创建对象
- 填写表格,称之为:对象属性赋值
成员方法
类的定义和使用
我们简单了解到可以使用类去封装属性,并基于类创建出一个个的对象来使用。 现在我们来看看类的使用语法:
- class是关键字,表示要定义类了
- 类的属性,即定义在类中的变量(成员变量)
- 类的行为,即定义在类中的函数(成员方法)
创建类对象的语法:对象 = 类名称()
成员变量和成员方法
什么是类的行为(方法)呢?
class Student:
name = None # 学生的姓名
age = None # 学生的年龄
def say_hi(self):
print(f"Hi大家好,我是{self.name}")
stu = Student()
stu.name = "张三"
stu.age = 25
stu.say_hi() # Hi大家好,我是张三
可以看出,类中:
- 不仅可以定义属性用来记录数据
- 也可以定义函数,用来记录行为
其中:
- 类中定义的属性(变量),我们称之为:成员变量
- 类中定义的行为(函数),我们称之为:成员方法
定义在类内部的函数 称之为方法
成员方法的定义语法
在类中定义成员方法和定义函数基本一致,但仍有细微区别:
def 方法名(self, 形参1, ......, 形参N):
方法体
可以看到,在方法定义的参数列表中,有一个:self关键字
self关键字是成员方法定义的时候,必须填写的。
- 它用来表示类对象自身的意思
- 当我们使用类对象调用方法的是,self会自动被python传入
- 在方法内部,想要访问类的成员变量,必须使用self
def say_hi(self): print(f"Hi大家好,我是{self.name}")
注意事项
self关键字,尽管在参数列表中,但是传参的时候可以忽略它。 如:
class Student:
name = None
def say_hi(self):
print("Hello 大家好")
def say_hi2(self, msg):
print(f"Hello 大家好,{msg}")
stu = Student()
stu.say_hi() # 调用的时候无需传参
stu.say_hi2("很高兴认识大家") # 调用的时候,需要传msg参数
结果:
Hello 大家好
Hello 大家好,很高兴认识大家
可以看到,在传入参数的时候,self是透明的,可以不用理会它。
总结
类是由哪两部分组成呢?
- 类的属性,称之为:成员变量
- 类的行为,称之为:成员方法
注意:函数是写在类外的,定义在类内部,我们都称之为方法哦
类和成员方法的定义语法
- self的作用 表示类对象本身的意思
- 只有通过self,成员方法才能访问类的成员变量
- self出现在形参列表中,但是不占用参数位置,无需理会
类和对象
现实世界的事物和类
现实世界的事物也有属性和行为,类也有属性和行为。
使用程序中的类,可以完美的描述现实世界的事物
类和对象 对象名 = 类名称()
基于类创建对象的语法:
为什么非要创建对象才能使用呢?
类只是一种程序内的“设计图纸”,需要基于图纸生产实体(对象),才能正常工作
这种套路,称之为:面向对象编程
使用类和对象描述现实事物
在现实中,生产事物
在程序中通过类来描述
基于类创建对象
class Clock:
id = None # 序列号
price = None # 零售价
def ring(self):
import winsound
winsound.Beep(2000, 3000)
clock1 = Clock() # 基于类创建对象
clock1.id = "003032"
clock1.price = 100
print(f"闹铃ID:{clock1.id},价格:{clock1.price}")
clock1.ring() # 使用对象的属性和行为clock1 = Clock()
clock2 = Clock() # 基于类创建对象
clock2.id = "003033"
clock2.price = 152
print(f"闹铃ID:{clock2.id},价格:{clock2.price}")
clock2.ring() # 使用对象的属性和行为
总结:
1. 现实世界的事物由什么组成?
- 属性
- 行为
类也可以包含属性和行为,所以使用类描述现实世界事物是非常合适的
2. 类和对象的关系是什么?
- 类是程序中的“设计图纸”
- 对象是基于图纸生产的具体实体
3. 什么是面向对象编程?
- 面向对象编程就是,使用对象进行编程。
即,设计类,基于类创建对象,并使用对象来完成具体的工作