python231126-创建和使用类,方法__init__()的用法并举例

在Python中, __init__() 是一个特殊的方法,用于在创建一个对象时进行初始化操作。它是Python中的构造函数,会在对象被创建时自动调用。 __init__() 方法允许我们为对象设置初始状态,初始化属性或执行其他必要的操作。

下面是 __init__() 方法的一般语法:

def __init__(self, 参数1, 参数2, ...):
    # 初始化操作
    # 设置属性

在上述语法中, self 表示当前对象的引用,而参数是我们在创建对象时传递给构造函数的值。我们可以在 __init__() 方法中使用这些参数来初始化对象的属性。

下面是一个示例,展示了如何使用 __init__() 方法初始化对象:

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

创建一个Person对象

person = Person(“小明”, 20)

访问对象的属性

print(person.name)  # 输出:小明
print(person.age)   # 输出:20

在上面的示例中,我们创建了一个名为 Person 的类,并在 __init__() 方法中初始化了两个属性: name 和 age 。当我们创建一个 Person 对象时,会自动调用 __init__() 方法,并传递相应的参数。然后,我们可以通过访问对象的属性来获取和修改这些值。

__init__() 方法在创建对象时非常有用,可以确保对象在被使用之前处于正确的状态。我们可以根据需要在 __init__() 方法中执行各种初始化操作,例如设置默认值、验证输入等。

需要注意的是, __init__() 方法只会在对象创建时调用一次。如果我们创建多个对象,每个对象都会有自己的属性值。这使得我们可以为每个对象设置不同的初始状态。

总而言之, __init__() 方法是Python中用于初始化对象的特殊方法。通过在这个方法中设置对象的初始状态,我们可以确保对象在创建时具有正确的属性值。这使得我们可以更好地组织和管理对象的数据。


在Python中,首字母大写的名称指的是类。

类中的函数称为方法。你在前面学到的有关函数的一切都适用于方法,就目前而言,唯一重要的差别是调用方法的方式。

在这个方法的名称中,开头和末尾各有两个下划线,这是一种约定,旨在避免Python默认方法与普通方法发生名称冲突。务必确保__init__()的两边都有两个下划线,否则当你使用类来创建实例时,将不会自动调用这个方法,进而引发难以发现的错误。

❶ class Dog:
❷     """一次模拟小狗的简单尝试。"""

❸     def __init__(self, name, age):
          """初始化属性name和age。"""
❹         self.name = name
          self.age = age

❺     def sit(self):
          """模拟小狗收到命令时蹲下。"""
          print(f"{self.name} is now sitting.")

      def roll_over(self):
          """模拟小狗收到命令时打滚。"""
          print(f"{self.name} rolled over!")

我们将方法__init__()定义成包含三个形参:self、name和age。在这个方法的定义中,形参self必不可少,而且必须位于其他形参的前面。为何必须在方法定义中包含形参self呢?因为Python调用这个方法来创建Dog实例时,将自动传入实参self。每个与实例相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。创建Dog实例时,Python将调用Dog类的方法__init__()。我们将通过实参向Dog()传递名字和年龄,self会自动传递,因此不需要传递它。每当根据Dog类创建实例时,都只需给最后两个形参(name和age)提供值。

❹处定义的两个变量都有前缀self。以self为前缀的变量可供类中的所有方法使用,可以通过类的任何实例来访问。self.name = name获取与形参name相关联的值,并将其赋给变量name,然后该变量被关联到当前创建的实例。self.age = age的作用与此类似。像这样可通过实例访问的变量称为属性。

Dog类还定义了另外两个方法:sit()和roll_over()(见❺)。这些方法执行时不需要额外的信息,因此它们只有一个形参self。我们随后将创建的实例能够访问这些方法,换句话说,它们都会蹲下和打滚。当前,sit()和roll_over()所做的有限,只是打印一条消息,指出小狗正在蹲下或打滚。但可以扩展这些方法以模拟实际情况:如果这个类包含在一个计算机游戏中,这些方法将包含创建小狗蹲下和打滚动画效果的代码;如果这个类是用于控制机器狗的,这些方法将让机器狗做出蹲下和打滚的动作。

发表评论