目录
一.类的定义和使用方法
成员变量和成员方法
成员方法的定义语法和self关键字
小结
二.类和对象
小结
三.属性(成员变量)的赋值
构造方法:_ _init_ _()
小结
一.类的定义和使用方法
可以使用类去封装属性,并基于类创建出一个个的对象来使用。
类的使用基本语法:
- class是关键字,表示要定义类了
- 类的属性,即定义在类中的变量(成员变量)
- 类的行为,即定义在类中的函数(成员方法)
创建类对象的语法:
对象=类名称()
成员变量和成员方法
可以看出,类中:
不仅可以来定义属性用来记录数据
也可以定义函数,用来记录行为
其中
类中定义的属性(变量),我们称之为:成员变量
类中定义的行为(函数),我们称之为:成员方法
所以,从现在开始定义在类里面的函数我们就称为方法
成员方法的定义语法和self关键字
在类中定义成员方法和定义函数基本一致,但仍有细微区别:
def 方法名(self,形参1,......,形参N):
方法体
可以看到,在方法定义的参数列表中,有一个: self关键字self关键字是成员方法定义的时候,必须填写的。
- 它用来表示类对象自身的意思
- 当我们使用类对象调用方法的是,self会自动被python传入
- 在方法内部,想要访问类的成员变量,必须使用self
注意
self关键字,尽管在参数列表中,但是传参的时候可以忽略它。如:
演示
class Student:
name = None
def say_hi (self):
print("helllo")
def say_hi2(self,msg):
print(f"hello,{msg}")
stu=Student()
stu.say_hi()
stu.say_hi2("很高兴认识大家!")
结果是
class Student:
name = "张三"
def say_hi (self):
print(f"helllo,我的名字是{self.name}")
def say_hi2(self,msg):
print(f"hello,{msg}")
stu=Student()
stu.say_hi()
stu.say_hi2("很高兴认识大家!")
print("----------")
stu.name="李四"
stu.say_hi()
小结
1.类是由哪两部分组成呢?
- 类的属性,称之为:成员变量
- 类的行为,称之为∶成员方法
注意:函数是写在类外的,定义在类内部,我们都称之为方法哦
2.类和成员方法的定义语法
class 类名称:
成员变量
def 成员方法(self,参数列表)∶
成员方法体
对象=类名称()
3.self的作用
- 表示类对象本身的意思
- 只有通过self,成员方法才能访问类的成员变量
- self出现在形参列表中,但是不占用参数位置,无需理会
二.类和对象
基于类创建对象的语法:对象名=类名称()
为什么非要创建对象才能使用呢?
类只是一种程序内的“设计图纸”,需要基于图纸生产实体(对象),才能正常工作
这种套路称之为︰面向对象编程
演示
class Clock:
id=None
price=None
def ring(self):
import winsound
winsound.Beep(2000,3000)#2000指的是频率,3000指的是响铃时间
clock1=Clock()
clock1.price=1000
print(clock1.price)
clock1.ring()
小结
1.现实世界的事物由什么组成?
- 属性
- 行为
类也可以包含属性和行为,所以使用类描述现实世界事物是非常合适的
2.类和对象的关系是什么?
类是程序中的“设计图纸”
对象是基于图纸生产的具体实体
3.什么是面向对象编程?
面向对象编程就是,使用对象进行编程。
即,设计类,基于类创建对象,并使用对象来完成具体的工作
三.属性(成员变量)的赋值
演示
class Student:
name=None
age=None
tel=None
student1=Student()
student1.name="张三"
student1.age=22
student1.tel="1234556"
student2=Student()
student2.name="李四"
student2.age=20
student2.tel="24523425"
上侧代码中,为对象的属性赋值需要依次进行,略显繁琐。有没有更加高效的方式,能够一行代码就完成呢?
思考: student()
这个括号,能否像函数(方法)那样,通过传参的形式对属性赋值呢?
答案是:可以,需要使用构造方法:_ _init_ _()
构造方法:_ _init_ _()
Python类可以使用:_init_()方法,称之为构造方法。可以实现:
- 在创建类对象(构造类)的时候,会自动执行。
- 在创建类对象(构造类)的时候,将传入参数自动传递给_ _init_ _方法使用。
演示
class Student:
name=None
age=None
tel=None
def __init__(self,name,age,tel):
self.name=name
self.age=age
self.tel=tel
stu=Student("张三",12,"2143235")
print(stu.name)
print(stu.age)
print(stu.tel)
结果是
注意
红色方框中的部分可以不写
如果不写那么底下就是给成员变量进行声明
小结
- 重要的事情说三遍,构造方法名称:_ _init_ _千万不要忘记init前后都有2个下划线
- 构造方法也是成员方法,不要忘记在参数列表中提供: self
- 在构造方法内定义成员变量,需要使用self关键字,这是因为︰变量是定义在构造方法内部﹐如果要成为成员变量﹐需要用self来表示。