25.类和对象

使用对象组织数据

1.在程序中设计表格,我们称之为:设计类(class)

  class Student:

    name = None # 记录学生姓名

2.在程序中打印生产表格,我们称之为:创建对象 # 基于类创建对象

 stu_1 = Student()

 stu_2 = Student()

3.在程序中填写表格,我们称之为:对象属性赋值

 stu_1.name = "tang"

 stu_2.name = "haha"

# 设计一个类
class Student:
    name = None   # 姓名
    gender = None  # 性别
    nationality = None  # 国籍

# 创建一个对象
stu_1 = Student()

# 对象属性进行赋值
stu_1.name = "堂"
stu_1.gender = "男"
stu_1.nationality = "中国"

# 获取对象中记录的信息
print(stu_1.name)
print(stu_1.gender)
print(stu_1.nationality)
堂
男
中国

类的定义和使用

使用程序中的类,可以完美的描述现实世界的事物

类的使用语法:

class 类名称: # class 是关键字,表示要定义类了 类名称规范大写字母开头

  类的属性 # 即定义在类中的变量(成员变量)

  类的行为 # 即定义在类中的函数(成员方法)

创建类对象的语法:

对象 = 类名称()

成员变量和成员方法简单举例

可以看出,类中:

  • 不仅可以定义属性来记录数据
  • 也可以定义函数,用来记录行为

其中:

  • 类中定义的属性(变量),我们称之为:成员变量
  • 类中定义的行为(函数),我们称之为:成员方法
class Student:
    name = None
    age = None
    def say_hi(self):
        print(f"Hi大家好,我是{self.name}")

stu = Student()
stu.name = "tang"
stu.say_hi()
Hi大家好,我是tang

成员方法的定义语法

在类中定义成员方法和定义函数基本一致,但仍有细微区别:

def 方法名(self, 形参1, 形参2, ......, 形参N):

  方法体

可以看到,在方法定义的参数列表中,有一个:self关键字

self 关键字是成员方法定义的时候,必须填写的

  • 它用来表示类对象自身的意思
  • 当我们使用类对象调用方法时,self会自动被python传入
  • 在方法内部,想要访问类的成员变量,必须使用self

注意事项:

  • self关键字,尽管在参数列表中,但是传参的时候可以忽略它
  • 在传入参数的时候,self是透明的,可以不用理会它

self的作用:

  • 表示类对象本身的意思
  • 只有通过self,成员方法才能访问类的成员变量
  • 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 大家好,很高兴认识大家

类和对象

基于类创建对象的语法: 对象名 = 类名称()

现实世界的事物由属性与行为组成,类也可以包含属性与行为,所以使用类描述现实世界事物是非常适合的

类是程序中的“设计图纸”,对象是基于图纸生产的具体实体

面向对象编程就是,使用对象进行编程,即,设计类,基于类创建对象,并使用对象来完成具体的工作

# 设计闹钟类
class Clock:
    id = None
    price = None
    def ring(self):
        import winsound
        winsound.Beep(2000, 3000)

# 构建两个闹钟对象并让其工作
clock1 = Clock()
clock1.id = "101"
clock1.price = 19.9
print(f"闹钟ID:{clock1.id},价格:{clock1.price}")
clock1.ring()

clock2 = Clock()
clock2.id = "102"
clock2.price = 18.8
print(f"闹钟ID:{clock2.id},价格:{clock2.price}")
clock2.ring()
闹钟ID:101,价格:19.9
闹钟ID:102,价格:18.8