018. 定义一个类,包含初始化方法和至少一个其他方法

在 Python 中,定义一个类通常包括一个初始化方法(__init__)和至少一个其他方法。初始化方法用于在创建类的实例时初始化对象的属性,而其他方法则用于实现类的功能。

以下是一个简单的示例,定义一个名为 Person 的类,包含初始化方法和一个其他方法:

示例代码

# 定义一个类
class Person:
    # 初始化方法
    def __init__(self, name, age):
        """
        初始化方法,用于创建 Person 对象时设置姓名和年龄。
        """
        self.name = name  # 设置姓名属性
        self.age = age    # 设置年龄属性

    # 其他方法
    def greet(self):
        """
        打印问候语。
        """
        print(f"Hello, my name is {self.name} and I am {self.age} years old.")

# 创建 Person 类的实例
person1 = Person("Alice", 30)
person2 = Person("Bob", 25)

# 调用实例的方法
person1.greet()  # 输出:Hello, my name is Alice and I am 30 years old.
person2.greet()  # 输出:Hello, my name is Bob and I am 25 years old.

代码解释

定义类

  • 使用 class 关键字定义一个名为 Person 的类。

初始化方法

  • __init__ 是一个特殊方法,用于在创建类的实例时初始化对象的属性。

  • self 是类实例的引用,用于访问类的属性和方法。

  • nameage 是传入的参数,用于设置对象的 nameage 属性。

其他方法

  • 定义了一个名为 greet 的方法,用于打印问候语。

  • 在方法中,使用 self.nameself.age 访问对象的属性。

创建实例

  • 使用 Person("Alice", 30) 创建了一个 Person 类的实例 person1

  • 使用 Person("Bob", 25) 创建了另一个实例 person2

调用方法

  • 使用 person1.greet()person2.greet() 调用实例的方法。

扩展:添加更多方法和属性

可以为类添加更多的方法和属性,以实现更复杂的功能。例如,添加一个方法来更新年龄:

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

    def greet(self):
        print(f"Hello, my name is {self.name} and I am {self.age} years old.")

    def celebrate_birthday(self):
        """
        庆祝生日,年龄加1。
        """
        self.age += 1
        print(f"Happy Birthday, {self.name}! You are now {self.age} years old.")

# 创建 Person 类的实例
person1 = Person("Alice", 30)

# 调用实例的方法
person1.greet()  # 输出:Hello, my name is Alice and I am 30 years old.
person1.celebrate_birthday()  # 输出:Happy Birthday, Alice! You are now 31 years old.
person1.greet()  # 输出:Hello, my name is Alice and I am 31 years old.

注意事项

self 参数

  • self 是类实例的引用,必须作为类方法的第一个参数。

  • 它用于访问类的属性和方法。

初始化方法

  • __init__ 方法在创建类的实例时自动调用。

  • 它用于初始化对象的属性。

方法调用

  • 使用 实例名.方法名() 调用实例的方法。

视频讲解

BiliBili: 视睿网络-哔哩哔哩视频 (bilibili.com)