优秀的编程知识分享平台

网站首页 > 技术文章 正文

详细介绍一下Python中的类与对象

nanyue 2025-03-03 19:33:23 技术文章 7 ℃

类和对象是面向对象编程的两个核心概念,而Python作为一门支持面向对象的编程语言,也是需要通过类和对象来实现代码的组织和封装的,下面我们就来详细介绍一下Python中的类与对象,来帮助大家一起了解它们的基本的概念,以及我们如何在编程中使用它们。

什么是类?

??类很多场景中,类被称为是一个蓝图或者是一个模板,它是用来定义对象所需要的属性和方法的模板,在Python中类通过class关键字来进行定义。实际使用中类其实是一个比较抽象的概念,只有它创建了对象之后,才会有实际的意义,并且才会为对象分配内存空间。

??总结来讲,类定义的是对象的结构和行为,所谓的结构就是指对象的属性,行为则是指对象可以执行的方法,在类中被定义为方法或者是函数。

类定义

??如下所示,我们定义了一个Car类来表示汽车。

class Car:
    # 构造方法,用于初始化对象的属性
    def __init__(self, make, model, year):
        self.make = make      # 汽车品牌
        self.model = model    # 汽车型号
        self.year = year      # 汽车年份

    # 一个方法,表示汽车的行为
    def display_info(self):
        print(f"{self.year} {self.make} {self.model}")

??在这个例子中,有如下的几个关键部分。

  • __init__ 方法:这是一个特殊构造函数,它在创建对象时被调用,用于初始化对象的属性。self代表当前对象的实例。
  • 属性makemodelyear是类的属性,它们描述了一个具体的汽车。
  • 方法display_info是一个普通方法,它用于展示汽车的信息。

类中的方法

??Python类方法可以分为如下几种。

??实例方法

??实例方法是用来操作对象数据的方法,我们前面提到的display_info就是一个实例方法,如下所示,它使用self来访问对象的属性,而self就是指向了当前的对象实例。

class Car:
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year

    def display_info(self):
        print(f"{self.year} {self.make} {self.model}")

??类方法和静态方法

??类方法使用@classmethod装饰器其参数指向的是类本身,而不是实例本身,通常用来操作类级别的属性和方法,静态方法使用@staticmethod装饰器,它不需要访问实例或者是类的属性,一般可以将其看做是一个独立的函数,与类相关,但不依赖于类实例。

class Car:
    count = 0  # 类属性,用于统计创建的Car对象数目

    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        Car.count += 1

    @classmethod
    def get_car_count(cls):
        return cls.count

    @staticmethod
    def is_valid_year(year):
        return year > 1885  # 汽车的发明年份

# 调用类方法和静态方法
print(Car.get_car_count())  # 输出: 0
print(Car.is_valid_year(2020))  # 输出: True

继承与多态

??与大多数面向对象的编程语言一样,Python也是支持了封装继承和多态的,封装自然不必多说,这里主要介绍一下Python中的继承以及多态。

继承

??子类会自动继承父类的所有属性和方法,并可以重写(覆盖)父类的方法,如下所示。

class ElectricCar(Car):
    def __init__(self, make, model, year, battery_size):
        super().__init__(make, model, year)  # 调用父类构造方法
        self.battery_size = battery_size

    def display_info(self):
        super().display_info()  # 调用父类的方法
        print(f"Battery size: {self.battery_size} kWh")

多态

??多态是指不同类的对象可以使用相同的方法名进行调用,而行为可以根据对象的类型而不同,如下所示。在这个例子中,show_car_info函数可以接受任何Car类或其子类的对象。通过多态,我们可以灵活地使用不同类型的对象。

def show_car_info(car):
    car.display_info()

electric_car = ElectricCar("Tesla", "Model S", 2022, 100)
show_car_info(electric_car)

什么是对象?

??对象是类的实例,是根据类的定义创建的具体的实体,包含了类中定义的各种属性以及方法,并且每个对象都有自己的数据,可以通过对象实例来调用类中的方法。

??下面我们就来演示一下如何通过类创建多个对象。

# 创建两个Car对象
car1 = Car("Toyota", "Corolla", 2020)
car2 = Car("Ford", "Mustang", 2021)

# 调用对象的方法
car1.display_info()  # 输出: 2020 Toyota Corolla
car2.display_info()  # 输出: 2021 Ford Mustang

??在上面的代码中car1car2 都是 Car 类的对象实例,虽然它们都属于同一个类 Car,但是它们的属性,如品牌、型号、年份是不同的,所以互不影响。

总结

??类是用来定义对象的结构和行为的模板,它本身只是一个定义,所以不占用内存空间,但是对象是类的真实存在,包含了类中定义的属性数据以及具体的方法调用,所以是占用了内存空间的。通过对类和对象的理解,可以帮助我们更好的理解面向对象的编程。

最近发表
标签列表