Python 基础(十四):类和对象

Python 基础(十四):类和对象_第1张图片

❤️ 博客主页:水滴技术
订阅专栏:Python 入门核心技术
支持水滴:点赞 + 收藏⭐ + 留言

文章目录

  • 一、面向对象编程
  • 二、创建类
  • 三、创建实例
    • 3.1、访问属性
    • 3.2、调用方法
  • 四、属性默认值
    • 4.1、在初始化方法中指定默认值
    • 4.2、声明属性时指定默认值
  • 五、修改属性值
    • 5.1、直接修改属性的值
    • 5.2、通过方法修改属性的值
  • 六、继承
    • 6.1、创建子类
    • 6.2、定义子类自己的属性和方法
    • 6.3、重写父类的方法
    • 6.4、子类的实例
  • 系列文章
  • 热门专栏


大家好,我是水滴~~

本篇主要讲述 Python 中的类和对象,主要内容有:面向对象编程、创建类、创建实例、属性的默认值、修改属性值、继承等。

一、面向对象编程

在介绍 Python 的类和对象之前,我们先了解一下面向对象编程的概念。那么什么是面向对象编程呢?

面向对象编程(Object Oriented Programming,OOP)是最有效的软件编写方法之一。在面向对象编程中,你可以将现实世界中的任何事务和情景抽象成一个对象(Object),而这个对象可以使用(Class)来表示。例如,现象世界中的人,可以抽象成一个 Person 类。

而对象的一些特征,可以使用类的属性(Property)来表示。例如,人的特征有姓名、性别、年龄等,可以抽象出属性 namesexage

另外对象还可以做一些动作,可以使用类的方法(Method)来表示。例如,人可以跑步、看书、写代码等,可以抽象出方法running()reading()coding()

而根据类来创建一个具体的对象,称为一个实例(Examples),这个创建的过程称为实例化。而一个类可以有无数个实例。

二、创建类

类包含了属性和方法。在 Python 中,使用 class 关键字来声明一个类,使用 __init__() 方法初始化属性值,而定义方法和定义函数一样,也就是说,我们把定义在类中的函数称为方法。

下面定义了一个 Person 类,使用特殊的__init__() 方法来初始化 namesexage,并定义了三个方法 running()reading()coding()

class Person:
    """
    这是一个 Person 类,
    它有姓名、性别、年龄三个属性,
    它可以跑步、看书、写代码
    """

    def __init__(self, name, sex, age):
        """定义一个初始化方法,用于初始化属性的值"""
        self.name = name
        self.sex = sex
        self.age = age
    
    def running(self):
        """定义一个跑步方法"""
        print(self.name + "正在跑步")

    def reading(self):
        """定义一个看书方法"""
        print(self.name + "正在看书")

    def coding(self):
        """定义一个写代码方法"""
        print(self.name + "正在写代码")

定义类也有很多需要注意的地方:

  • 类名首字母要大写,采用的是大驼峰命名法。
  • 在类中定义的函数称为方法,方法与函数的使用完全相同。
  • __init__()是一个特殊的方法,每次初始化实例时都会自动调用它,用于初始化实例的属性值。
  • 所有的方法都有一个 self 形参,它是必不可少的,并且只有在方法的第一个形参。self 是一个指向实例本身的引用,用于访问实例中的属性和方法。这种通过实例来访问的变量称为属性

三、创建实例

类创建好后,就可以通过类来创建具体的实例了。

创建实例时需要指定类名,由于会自动调用 __init__() 方法,所以需要指定其实参。另外可以根据需要创建任意数量的实例,为每个实例指定不同的实例名即可。

下面例子,创建了一个姓名为“张三”的实例,并将这个实例存在在变量 person 中:

# 创建 Person 的实例,实例名为 person
person = Person("张三", "男", 18)

3.1、访问属性

要访问实例的属性,可以使用句点来访问。下面例子分别访问 person 实例的三个属性,并输出属性值:

# 访问 person 实例的属性,并使用 print 输出属性值
print(person.name)
print(person.sex)
print(person.age)

输出结果:

张三
男
18

3.2、调用方法

要调用实例的方法,同样使用据点来调用(即使方法没有行参,调用时也不要忘记在后面加括号())。下面例子分别调用了 person 实例的三个方法。

# 调用 person 实例的方法
person.running()
person.reading()
person.coding()

输出结果:

张三正在跑步
张三正在看书
张三正在写代码

四、属性默认值

类中的每个属性都必须有初始值,否则将无法访问。对于一些属性,可以指定其默认值。

4.1、在初始化方法中指定默认值

在初始化方法中,可以直接指定默认值,无需行参来指定。

class Person:
    """
    这是一个 Person 类,
    它有姓名、性别、年龄三个属性,
    它可以跑步、看书、写代码
    """

    def __init__(self, name, sex):
        """定义一个初始化方法,用于初始化属性的值"""
        self.name = name
        self.sex = sex
        self.age = 18
    
    ...

4.2、声明属性时指定默认值

在类中,可以直接声明一个属性,并指定其默认值。

class Person:
    """
    这是一个 Person 类,
    它有姓名、性别、年龄三个属性,
    它可以跑步、看书、写代码
    """
    
    age = 18

    def __init__(self, name, sex):
        """定义一个初始化方法,用于初始化属性的值"""
        self.name = name
        self.sex = sex
    
    ...

五、修改属性值

属性的值通过初始化后,是可以修改的,下面列出了两种修改的方法:

5.1、直接修改属性的值

要修改属性的值,最简单的方法是通过实例直接访问它并赋值。

# 创建 Person 的实例,实例名为 person
person = Person("张三", "男")
# 修改 sex 属性值
person.sex = "女"

5.2、通过方法修改属性的值

在类中可以定义一个修改属性值的方法,调用后即可修改属性的值。

    def set_sex(self, sex):
        """定义一个设置性别属性值的方法"""
        self.sex = sex

六、继承

在创建类时,还可以选择继承现有的类,当一个类继承了另一个类时,它将自动获得另一个类的所有属性和方法。被继承者称为父类,继承者称为子类。子类不但拥有父类的所有属性和方法,同时还可以定义自己的属性和方法。

6.1、创建子类

创建子类时,需要在类名后面指定父类名称,并在 __init__() 方法中初始化父类的属性。

下面例子我们创建一个 Woman 子类,该类继承上面例子中的 Person 类:

class Woman(Person):
    """
    这是一个 Woman 类,它继承了 Person 类,
    它具有父类的三个属性,
    它具有父类的三个方法
    """

    def __init__(self, name, age):
        """初始化父类的属性"""
        super().__init__(name, "女", age)

我们创建的 Woman 子类,已经明确知道她的性别为“女”,所以初始化方法中无需指定行参 sex,在初始化父类属性时,将 sex 参数固定为“女”即可。

6.2、定义子类自己的属性和方法

当然子类是可以有自己的属性和方法的。

下面例子中,为 Woman 子类增加了 height 属性和 movies() 方法:

class Woman(Person):
    """
    这是一个 Woman 类,它继承了 Person 类,
    它除了有父类的三个属性,还有自己的属性:身高,
    它除了有父类的三个方法,还有自己的方法:看电影
    """

    def __init__(self, name, age, height):
        """初始化父类的属性"""
        super().__init__(name, "女", age)
        """初始化自己的属性"""
        self.height = height

    def movies(self):
        """定义一个看电影方法"""
        print(self.name + "正在看电影")

6.3、重写父类的方法

当父类的方法不适用于子类时,可以在子类中重写父类的方法。

例如:我们定义的 Woman 子类不会写代码,那么就可以重写父类的 coding() 方法。

class Woman(Person):
    """
    这是一个 Woman 类,它继承了 Person 类,
    它除了有父类的三个属性,还有自己的属性:身高,
    它除了有父类的三个方法,还有自己的方法:看电影
    """

    def __init__(self, name, age, height):
        """初始化父类的属性"""
        super().__init__(name, "女", age)
        """初始化自己的属性"""
        self.height = height

    def movies(self):
        """定义一个看电影方法"""
        print(self.name + "正在看电影")
        
    def coding(self):
        """重写父类的写代码方法"""
        print(self.name + "不会写代码")

6.4、子类的实例

我们在使用子类的实例时并没有特殊的地方,访问其父类的属性和方法的方式,与访问子类的方式完全相同。

下面例子创建了 Woman 的实例,调用了实例的方法,并访问了实例的属性

# 创建 Woman 的实例,并将实例存在到变量 woman 中
woman = Woman("小红", 18, 165)

# 调用 woman 实例的方法
woman.running()
woman.reading()
woman.coding()
woman.movies()

# 访问 woman 实例的属性,并输出
print(woman.name)
print(woman.sex)
print(woman.age)
print(woman.height)

输出结果:

小红正在跑步
小红正在看书
小红不会写代码
小红正在看电影
小红
女
18
165

系列文章

Python 基础(一):初识 Python
Python 基础(二):搭建 Python 开发环境
Python 基础(三):Python 集成开发工具 IDLE
Python 基础(四):基础语法
Python 基础(五):变量与常量
Python 基础(六):基本数据类型
Python 基础(七):常用运算符
Python 基础(八):流程控制语句
Python 基础(九):列表
Python 基础(十):元组
Python 基础(十一):集合
Python 基础(十二):字典
Python 基础(十三):函数

热门专栏

《Python入门核心技术》
《IDEA 教程:从入门到精通》
《Java 教程:从入门到精通》
《MySQL 教程:从入门到精通》
《大数据核心技术从入门到精通》

你可能感兴趣的:(Python入门核心技术,python,开发语言,类,面向对象编程)