一、类的定义和使用
1.类的使用语法:
class 类名称:
- class是关键字,表示要定义类
类的属性
- 类的属性,即定义在类中的变量(成员变量)
- 类的行为,即定义在类中的函数 (成员方法)
创建类对象的语法
- 对象 = 类名称()
2.成员变量和成员方法
那么,什么是类的行为(方法) 呢?
class student:
# 类的属性——成员变量
name = None
age = None
# 类的行为——成员方法
def say_hi(self) :
print(f"Hi大家好,我是{self.name}")
stu = student()
stu.name ="Joe"
stu.say_hi()# 输出: Hi大家好,我是Joe
可以看出,类中:
- 不仅可以定义属性用来记录数据
- 也可以定义函数,用来记录行为
其中:
- 类中定义的属性(变量),我们称之为:成员变量
- 类中定义的行为(函数),我们称之为:成员方法
3.成员方法的定义语法
在类中定义成员方法和定义函数基本一致,但仍有细微区别:
def 方法名(self,形参1,......,形参N):
方法体
可以看到,在方法定义的参数列表中,有一个self关键字:
self关键字是成员方法定义的时候必须填写
。
- 它用来表示类对象自身的意思;
- 当我们使用类对象调用方法的是,self会自动被python传入;
在方法内部,想要访问类的成员变量,必须使用self
。
4.注意事项
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()
# 调用的时候,需要传msg参数
stu.say_hi2("很高兴认识大家")
可以看到,在传入参数的时候,self是透明的,可以不用理会它
二、实践
定义一个闹钟对象;
- 成员变量:编号、价格
- 成员方法:闹钟铃声
代码示例如下:
import winsound
class Clock:
id = None
price = None
def ring(self):
winsound.Beep(1000,3000)
print(f"闹钟{self.id},价格是{self.price}元")
clock = Clock()
clock.id = "0101"
clock.price = "122"
clock.ring()
三、构造方法
1.什么是构造方法
Python类可以使用: __init__()
方法,称之为构造方法。可以实现:
- 在创建类对象(构造类)的时候,会自动执行
- 在创建类对象 (构造类)的时候,将传入参数自动传递给
__init__()
方法使用
2.代码示例:
# 定义一个名为Person的类
class Person:
# 初始化方法,用于设置成员变量
def __init__(self, name, age):
self.name = name
self.age = age
# 成员方法,打印个人信息
def print_info(self):
print("姓名:", self.name)
print("年龄:", self.age)
# 创建一个Person对象并调用成员方法
person1 = Person("张三", 25)
person1.print_info()
输出结果:
# 姓名: 张三
# 年龄: 25
在上面的代码中,我们定义了一个名为Person的类。在初始化方法__init__中,我们设置了两个成员变量name和age,它们分别用于存储人物的姓名和年龄。
# 初始化方法,用于设置成员变量
def __init__(self, name, age):
self.name = name
self.age = age
等于
# 定义一个名为Person的类
class Person:
name = None
age = None
在类中,我们还定义了一个成员方法print_info,该方法用于打印个人的姓名和年龄。
在主程序中,我们创建了一个Person对象person1,并传入了姓名"张三"和年龄25。然后,我们调用了person1对象的成员方法print_info,它将打印出姓名和年龄。
3.构造方法的使用
正常情况下定义对象的成员属性,创建对象给成员属性赋值代码如下:
# 定义一个名为Person的类
class Person:
name = None
age = None
# 创建一个Person对象并调用成员方法
person1 = Person()
person1.name = "张三"
person1.age = 23
而有了构造方法之后,创建对象给成员属性赋值代码可以简化为一行:
# 定义一个名为Person的类
class Person:
# 初始化方法,用于设置成员变量
def __init__(self, name, age):
self.name = name
self.age = age
# 创建一个Person对象并调用成员方法
person1 = Person("张三", 25)
四、总结
1.现实世界的事物由什么组成?
- 属性
- 行为
类也可以包含属性和行为,所以使用类描述现实世界事物是非常合适的。
2.类和对象的关系是什么?
- 类是程序中的“设计图纸
- 对象是基于图纸生产的具体实体
3.什么是面向对象编程?
- 面向对象编程就是,使用对象进行编程
即,设计类,基于类创建对象,并使用对象来完成具体的工作
。
4.构造方法
- 名称:
__init__
注意init前后的2个下划线符号 - 作用:构建类对象的时候会自动运行;构建类对象的传参会传递给构造方法,借此特性可以给成员变量赋
- 注意事项:构造方法不要忘记self关键字;在方法内使用成员变量需要使用self。