Python面向对象编程基础:类与对象核心知识详解

        面向对象编程(Object-Oriented Programming, OOP)是Python的核心编程范式之一,它以“对象”为基本单元组织代码,通过类定义对象的结构和行为。类和对象的设计能够提高代码的可复用性、可维护性和扩展性,是构建复杂程序的基础。本文将从类和对象的定义入手,系统梳理其核心知识点,涵盖属性、方法、继承、多态等核心概念。

目录

1. 类与对象的关系

2. 属性:实例属性与类属性

3. 方法:实例方法、类方法与静态方法

4. 构造函数 __init__ 的核心作用

5. 继承与多态的实现

6. 特殊方法与对象行为定制

7.知识总结


1. 类与对象的关系

  • 类(Class):是对象的抽象模板,定义对象的共同属性和方法。例如,“汽车”类可以包含颜色、品牌等属性,以及启动、加速等方法。

  • 对象(Object):是类的具体实例,拥有类定义的属性和方法。例如,“一辆白色比亚迪”是“汽车”类的对象。

class Car:  # 定义类
    def __init__(self, color, brand):
        self.color = color
        self.brand = brand

my_car = Car("白色", "比亚迪")  # 创建对象

2. 属性:实例属性与类属性

  • 实例属性:通过 self 在 __init__ 方法中定义,每个对象拥有独立的属性值。

    class Student:
        def __init__(self, name):
            self.name = name  # 实例属性
    
    stu1 = Student("张三")
    stu2 = Student("李四")
    print(stu1.name)  # 输出:张三
    print(stu2.name)  # 输出:李四
  • 类属性:直接定义在类内部,所有对象共享,适合存储全局数据。

    class Student:
        school = "第一中学"  # 类属性
    
    print(Student.school)  # 输出:第一中学(通过类名访问)

3. 方法:实例方法、类方法与静态方法

  • 实例方法:操作对象自身,必须包含 self 参数。

    class Dog:
        def bark(self):  # 实例方法
            print("汪汪!")
    
    dog = Dog()
    dog.bark()  # 输出:汪汪!
  • 类方法:用 @classmethod 装饰,操作类本身,参数为 cls

    class Dog:
        species = "犬科"  # 类属性
    
        @classmethod
        def get_species(cls):
            return cls.species
    
    print(Dog.get_species())  # 输出:犬科
  • 静态方法:用 @staticmethod 装饰,与类和实例无关,作为工具函数使用。

    class MathUtils:
        @staticmethod
        def add(a, b):
            return a + b
    
    print(MathUtils.add(3, 5))  # 输出:8

4. 构造函数 __init__ 的核心作用

__init__ 是类的构造函数,在对象创建时自动调用,用于初始化实例属性。其核心功能包括:

  1. 初始化对象状态:为对象赋予初始属性值。

  2. 参数传递:通过构造函数接收外部参数,定义对象特性。

  3. 强制属性定义:确保对象必须包含某些属性。

示例

class Book:
    def __init__(self, title, author):
        self.title = title  # 实例属性初始化
        self.author = author

# 创建对象时必须传入参数
book = Book("Python入门", "李明")
print(book.title)  # 输出:Python入门

注意事项

  • __init__ 方法名固定,不可修改。

  • 若未显式定义 __init__,Python 会提供默认的空构造函数。


5. 继承与多态的实现

  • 继承:子类继承父类的属性和方法,避免重复代码。

    class Animal:
        def speak(self):
            pass
    
    class Dog(Animal):  # 继承Animal类
        def speak(self):  # 重写父类方法
            return "汪汪!"
  • 多态:同一方法在不同子类中表现不同行为。

    class Cat(Animal):
        def speak(self):
            return "喵喵!"
    
    # 多态调用
    animals = [Dog(), Cat()]
    for animal in animals:
        print(animal.speak())  # 输出:汪汪! 喵喵!

关键点

  • 子类可通过 super() 调用父类方法。

  • 抽象类(如 Animal)可通过 abc 模块强制子类实现方法。


6. 特殊方法与对象行为定制

通过实现特殊方法(双下划线方法),可自定义对象的运算符、字符串表示等行为:

  • __str__:定义对象的用户友好字符串表示(print(obj) 时调用)。

  • __repr__:定义对象的官方字符串表示(调试时使用)。

  • __add__:重载加法运算符。

示例

class Vector:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __add__(self, other):  # 重载加法运算符
        return Vector(self.x + other.x, self.y + other.y)

    def __str__(self):
        return f"Vector({self.x}, {self.y})"

v1 = Vector(2, 3)
v2 = Vector(1, 4)
print(v1 + v2)  # 输出:Vector(3, 7)


7.知识总结

  1. 类与对象:类是模板,对象是实例,二者共同构成OOP的基础。

  2. 属性与方法:实例属性描述对象特征,类属性共享数据;实例方法操作对象,类/静态方法提供工具支持。

  3. __init__ 构造函数:初始化对象属性,确保对象状态正确。

  4. 继承与多态:通过继承复用代码,多态实现接口统一但行为灵活。

  5. 特殊方法:定制对象行为(如运算符、字符串表示),增强代码表现力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值