在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岁。
此时p1
和p2
就是Person类的实例,每个对象都有自己的name
和age
。
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面向对象编程里,类是抽象的定义,而实例是具体的实现。通过类可以批量创建相似结构的实例,并对实例进行方法调用或属性访问,让程序更易维护、更可复用。