Python类(Class)和实例(Instance)示例详解

Python的面向对象编程里,类(Class)是创建对象(Instance)的蓝图或模板,实例则是根据这个蓝图产生的具体“物件”。换句话说,类定义了数据和行为的结构,而实例则是在运行时拥有实际数据和方法的对象。

1. 什么是类(Class)?

类是对现实事物的抽象,一般包含属性(变量)和方法(函数)。比如:我们想定义一个人的信息,包括姓名和年龄,可先写一个Person类:

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

    def say_hello(self):
        print(f"你好,我叫{self.name},今年{self.age}岁。")

上面__init__是类的初始化方法,每当你创建对象(实例)时就会自动执行。

2. 创建实例(对象)

要产生一个对象,需要调用类的名字并传入初始化所需参数:

p1 = Person("小明", 20)
p2 = Person("小红", 21)

p1.say_hello()  # 输出: 你好,我叫小明,今年20岁。
p2.say_hello()  # 输出: 你好,我叫小红,今年21岁。

此时p1p2就是Person类的实例,每个对象都有自己的nameage

3. 实例属性与类属性

实例属性是存储在对象本身里的数据,不同对象可拥有不同的属性值;类属性则共享在类定义里,对所有实例都可见。举例:

class Cat:
    species = "猫科动物"  # 这是类属性

    def __init__(self, name):
        self.name = name  # 这是实例属性

c1 = Cat("Tom")
c2 = Cat("Jerry")

print(c1.species)   # 猫科动物
print(c2.species)   # 猫科动物
print(c1.name)      # Tom
print(c2.name)      # Jerry

4. 实例方法与self参数

方法(method)定义在类里,用来描述对象的行为。第一个参数self指向当前实例,让方法能访问实例属性:

class Dog:
    def __init__(self, name):
        self.name = name

    def bark(self):
        print(f"{self.name}在汪汪叫")

dog1 = Dog("旺财")
dog1.bark()  # 旺财在汪汪叫

5. 修改与删除实例属性

我们随时可以修改对象的属性,或用del删除属性:

dog1.name = "小黑"   # 修改属性
del dog1.name        # 删除属性

6. 区别:类与实例

  • :相当于模板或蓝图,描述属性和方法。
  • 实例:由类创建出的具体对象,每个实例可有自己独特的数据(实例属性)。

7. 小结

在Python面向对象编程里,是抽象的定义,而实例是具体的实现。通过类可以批量创建相似结构的实例,并对实例进行方法调用或属性访问,让程序更易维护、更可复用。