Python 含参构造函数实例详解

Python 含参构造函数实例详解

在 Python 中,我们可以为类定义构造函数,用于在创建对象时初始化对象的属性。Python 中的构造函数又称为 __init__() 函数。在本文中,我们将详细讲解含参构造函数的使用,以及如何在类中定义含参构造函数。

定义含参构造函数

含参构造函数与无参构造函数的定义方式相似,唯一不同的地方就是含参构造函数需要在定义时指定参数列表。一般情况下,我们将该参数列表称为“self”以外的参数。例如:

class MyClass:
    def __init__(self, arg1, arg2):
        self.arg1 = arg1
        self.arg2 = arg2

上述代码中,我们定义了一个名为 MyClass 的类,在 __init__() 函数中,我们定义了两个参数,分别为 arg1arg2self 参数代表的是当前对象本身,不属于类的参数范畴。

创建含参构造函数的对象

在定义完含参构造函数后,我们需要创建该类的对象并传递参数。如下例所示:

class MyClass:
    def __init__(self, arg1, arg2):
        self.arg1 = arg1
        self.arg2 = arg2

my_obj = MyClass('hello', 123)
print(my_obj.arg1)  # 输出:'hello'
print(my_obj.arg2)  # 输出:123

在上述代码中,我们首先定义了一个 MyClass 类,并且为其定义了一个含参构造函数。接着,我们创建了一个名为 my_obj 的该类实例,并将参数传递到该实例的构造函数中。最后,我们通过 print() 函数输出对象属性的值。

含参构造函数示例

简单示例

下面我们来看一个简单的含参构造函数示例。该类用于创建点的实例,并为点定义了 xy 两个属性。

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

p = Point(3, 4)
print(p.x)  # 输出:3
print(p.y)  # 输出:4

在上述代码中,我们首先定义了一个名为 Point 的类,并为其定义了一个含参构造函数。接着,我们创建了一个名为 p 的该类实例,并将参数 (3, 4) 传递到该实例的构造函数中。最后,我们通过 print() 函数输出对象属性的值。

带默认值的示例

下面我们来看一个带有默认值的含参构造函数示例。该类用于创建学生的实例,并为学生定义了 nameage 两个属性。在该示例中,当创建学生实例时,如果没有传递 age 参数,则默认将其置为 18。

class Student:
    def __init__(self, name, age=18):
        self.name = name
        self.age = age

s1 = Student('Tom', 20)
s2 = Student('Jerry')
print(s1.name, s1.age)  # 输出:Tom 20
print(s2.name, s2.age)  # 输出:Jerry 18

在上述代码中,我们首先定义了一个名为 Student 的类,并为其定义了一个含参构造函数。在该构造函数中,我们为 age 参数指定了默认值 18。接着,我们创建了两个名为 s1s2 的该类实例,并将参数传递到该实例的构造函数中。当为 s1 传递的参数分别为 'Tom'20 时,而为 s2 传递的只有 'Jerry' 参数,此时 age 参数自动取默认值 18。最后,我们通过 print() 函数输出对象属性的值。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 含参构造函数实例详解 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 一步一步跟我学易语言之变量的有效范围

    一步一步跟我学易语言之变量的有效范围 在易语言中,变量的有效范围指的是变量在程序中可以被访问和使用的范围。了解变量的有效范围对于编写易语言程序非常重要。下面是一份详细的攻略,将帮助你理解易语言中变量的有效范围。 1. 全局变量 全局变量是在程序的任何地方都可以访问和使用的变量。在易语言中,你可以在程序的任何位置声明全局变量。全局变量的有效范围从声明的位置开始…

    other 2023年7月29日
    00
  • PHP使用星号隐藏用户名,手机和邮箱的实现方法

    让我先说明一下,PHP使用星号隐藏用户名、手机和邮箱可以增强用户隐私保护,但是仍然有一定的局限性,因为“星号隐藏”并不能真正保证数据的安全,因此在实际开发中,需要注意加强用户数据的安全性。 下面我将分步骤详细讲解PHP使用星号隐藏用户名、手机和邮箱的实现方法,具体步骤如下: 1. 获得数据 首先,我们需要从用户的输入中获取需要隐藏的用户名、手机和邮箱。假设输…

    other 2023年6月27日
    00
  • 详解C语言之单链表

    详解C语言之单链表 什么是单链表 单链表是一种数据结构,将数据存储在一系列的节点(Node)中。每个节点包含两部分:数据(Datum)和指向下一个节点的指针(Pointer)。节点之间通过指针连接起来,形成链表。单链表只能从头节点一直访问到尾节点,不能随机访问。 单链表的操作 单链表的常见操作有以下几个: 链表的创建 创建一个链表需要两个步骤:先创建头节点,…

    other 2023年6月27日
    00
  • java 继承访问成员变量代码实例

    下面为您详细讲解关于Java继承访问成员变量的完整攻略。 继承的概念 继承是面向对象编程的三大特性之一,其主要作用是扩展已有的类,让子类拥有父类的属性和方法,同时还可以增加和修改子类特有的属性和方法。 访问成员变量的规则 在Java语言中,继承会导致子类拥有父类的非私有成员变量和方法。对于访问成员变量的规则,主要就是看继承的关系: 子类可以直接访问父类中被继…

    other 2023年6月26日
    00
  • 浅谈Java自定义类加载器及JVM自带的类加载器之间的交互关系

    浅谈Java自定义类加载器及JVM自带的类加载器之间的交互关系 Java类加载器负责将类的字节码从磁盘上读取到JVM内存中,并为类创建JVM运行时数据结构。JVM自带三种类加载器:启动类加载器、扩展类加载器和应用程序类加载器。Java自定义类加载器可以根据特定的需求实现不同的类加载行为和策略。 Java类加载器间的层次关系 Java类加载器中有一个明确的层次…

    other 2023年6月27日
    00
  • dos变量定义和引用方法

    DOS变量定义和引用方法是在DOS命令行窗口中定义和使用变量的一种方式。下面是详细的攻略: 定义DOS变量 在DOS中,可以通过set命令来定义变量。例如,要定义一个名为myVar的变量,其值为hello world,可以使用以下命令: set myVar=hello world 在此示例中,将创建一个名为myVar的变量,并将其值设置为hello worl…

    other 2023年6月27日
    00
  • 解析C++类内存分布

    解析 C++ 类内存分布,需要了解以下几个概念: 对象的内存分布 成员变量的内存分布 内存对齐原则 对象的内存分布 一个 C++ 对象在内存中的分布包含三个部分: 对象头 成员变量 对象尾(可选) 对象头包含一些元信息,例如虚表指针等内容。成员变量是对象的核心数据,占用了对象内存的大部分空间。对象尾是一些特殊情况下将会占用的空间,例如空类或虚继承。 成员变量…

    other 2023年6月27日
    00
  • MySQL更新存放JSON的字段、\“ 转义成 “的问题描述

    MySQL中可以使用UPDATE语句更新存放JSON的字段。JSON是一种轻量级的数据交换格式,常常用于表示复杂的数据结构。当我们需要更新JSON字段中的值时,可以使用MySQL提供的一些内置函数来实现。 在更新JSON字段时,有时候需要使用到双引号。而MySQL中默认的转义字符是反斜杠(\),所以需要使用双反斜杠(\)来转义双引号。 下面是一个具体的示例,…

    other 2023年6月25日
    00
合作推广
合作推广
分享本页
返回顶部