四时宝库

程序员的知识宝库

Python基础编程——类的构造方法(python类构造函数)

构造方法是类的重要组成部分,在面向对象编程中,所有的类都有构造方法。对象的创建就是通过构造方法来完成的,构造方法的主要功能就是完成对象的初始化,当类实例化一个对象时,会自动调用构造方法。在我们前面写的类中,都没有显示的编写其构造方法,这是因为在Python中所有类都是object类的子类,默认都会继承object类的构造方法,在实例化对象时会默认调用object类的构造方法。

构造方法

Python中的构造方法的创建与Java中不同,Java中的构造方法的名称需要与类名相同,在Python中有自己独特的书写方式,具体如下construction_method.py程序所示:

construction_method.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# 定义一个Person类
class Person:
    # 定义构造方法
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def speak(self):
        print('你好!我的名字是{},年龄是{}。'.format(self.name, self.age))


# 实例化类的对象
person = Person('Python', 20)
# 调用类的speak()方法
person.speak()

程序执行结果如下所示:
你好!我的名字是Python,年龄是20。

在上面的程序中我们定义了一个Person类,其中__init__()方法即为Person类的构造方法,方法名以双下划线(__)开头并且以双下划线(__)结束,这样的方法在Python中都具有特殊的意义,后续我们会在一个单独的章节中详细讲解这类特殊的方法。

在构造方法中我们定义了两个参数name和age,并将其分别赋值给Person类的name属性和age属性。在实例化Person类的对象时,需要传递name参数和age参数给构造方法,以便构造方法完成对象的初始化。最后调用Person类的speak()方法打印一句话,其中包括了Person的name属性和age属性。

父类构造方法的使用

在使用继承时子类会继承父类所有的属性和方法,这其中当然也包括父类的构造方法,但是在编写子类构造方法时会覆盖父类构造方法,如果即想在子类的构造方法中添加子类特有的功能,又想保留父类构造方法的功能,那需要如何处理呢?在这里我们使用super()函数来处理,super也是Python中的关键,在这里表示的就是超类(父类)的意思。具体如下super_construction_method.py程序所示:

super_construction_method.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# 定义一个Person类
class Person:
    # 定义构造方法
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def speak(self):
        print('你好!我的名字是{},年龄是{}。'.format(self.name, self.age))


# 定义一个Student类并从Person类继承
class Student(Person):
    # 定义构造方法
    def __init__(self, name, age, student_no, native_place):
        super().__init__(name, age)
        self.student_no = student_no
        self.native_place = native_place

    def study_course(self):
        print('你好!我的名字是:{},年龄是:{},学号是:{},来自:{}。'.format(self.name, self.age, self.student_no,
                                                        self.native_place))


# 实例化类的对象
student = Student('Python', 20, 20210001, '北京')
# 调用类的speak()方法
student.study_course()

程序执行结果如下所示:
你好!我的名字是:Python,年龄是:20,学号是:20210001,来自:北京。

在上面的程序中,子类Student继承从父类Person中继承了构造方法,在构造方法中使用super()函数调用父类Person的构造方法。这里调用父类的构造方法的写法有多种,上面程序中的写法是最常用也是Python官方推荐的写法。

需要注意的是:当重写(定义)子类构造方法时,必须要调用父类的构造方法,调用父类的构造方法时,需要指定父类构造方法的参数。

总结

本节主要介绍了类的构造方法的定义以及如何在子类中调用父类的构造方法,我们使用super()函数来调用父类的构造方法。

下一节将介绍一些Python中常用的特殊方法,敬请关注!

如果有需要文中小程序的可以私信我哟!

创作不容易,还请点个赞!喜欢的小伙伴请点关注、收藏!

欢迎大家转发、评论!

#Python##Python基础##Python入门推荐##Python编程从入门到实践##Python入门#

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接