【30天玩转python】面向对象编程基础

面向对象编程基础

面向对象编程(Object-Oriented Programming,简称 OOP)是 Python 中非常重要的编程范式之一,它允许我们通过定义类和创建对象来组织代码。本节将介绍 Python 中面向对象编程的基本概念,包括类、对象、方法、继承、多态等核心概念。


1. 类与对象

1.1 什么是类

类是对象的蓝图或模板,定义了对象的属性和行为。属性是类中的变量,行为是类中的方法(函数)。通过类的定义,我们可以创建具有相似属性和行为的多个对象。

python 复制代码
class Dog:
    # 类属性
    species = "Canis lupus"

    # 初始化方法(构造函数)
    def __init__(self, name, age):
        # 实例属性
        self.name = name
        self.age = age

    # 实例方法
    def bark(self):
        print(f"{self.name} 在叫!")

# 创建对象
my_dog = Dog("旺财", 5)
print(my_dog.name)  # 输出:旺财
my_dog.bark()       # 输出:旺财 在叫!
1.2 什么是对象

对象是类的实例化,类就像一个模板,而对象是根据这个模板创建的实际实体。每个对象都有独立的属性和值,但行为(方法)是共享的。

python 复制代码
dog1 = Dog("小白", 2)
dog2 = Dog("大黄", 4)

print(dog1.name)  # 输出:小白
print(dog2.name)  # 输出:大黄

2. 类的构造方法

Python 中的类有一个特殊的初始化方法 __init__(),当我们创建对象时,这个方法会被自动调用,用于初始化对象的属性。

python 复制代码
class Cat:
    def __init__(self, name, color):
        self.name = name
        self.color = color

my_cat = Cat("咪咪", "白色")
print(my_cat.name)   # 输出:咪咪
print(my_cat.color)  # 输出:白色

3. 类属性与实例属性

  • 类属性 :类属性是所有对象共享的属性,定义在类内部但在 __init__() 方法之外。
  • 实例属性 :实例属性是每个对象独有的属性,通常在 __init__() 方法中定义。
python 复制代码
class Bird:
    species = "鸟类"  # 类属性

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

bird1 = Bird("麻雀")
bird2 = Bird("乌鸦")

print(bird1.species)  # 输出:鸟类
print(bird2.species)  # 输出:鸟类

print(bird1.name)  # 输出:麻雀
print(bird2.name)  # 输出:乌鸦

4. 方法

类中的方法是定义在类内部的函数,用来描述类的行为。方法有以下几种:

4.1 实例方法

实例方法是最常见的方法,它操作的是对象的属性,并且需要使用 self 参数来访问实例属性。

python 复制代码
class Car:
    def __init__(self, model, color):
        self.model = model
        self.color = color

    def drive(self):
        print(f"{self.color} {self.model} 正在行驶")

my_car = Car("Toyota", "红色")
my_car.drive()  # 输出:红色 Toyota 正在行驶
4.2 类方法

类方法是作用于类本身的方法,它们通过 @classmethod 装饰器定义,并且第一个参数通常是 cls,用于访问类属性。

python 复制代码
class Animal:
    species = "动物"

    @classmethod
    def show_species(cls):
        print(f"这是一个 {cls.species}")

Animal.show_species()  # 输出:这是一个 动物
4.3 静态方法

静态方法不依赖于类或实例,它们通过 @staticmethod 装饰器定义,通常用于定义逻辑上与类相关但不需要访问类或实例属性的方法。

python 复制代码
class MathOperations:
    @staticmethod
    def add(a, b):
        return a + b

result = MathOperations.add(5, 3)
print(result)  # 输出:8

5. 继承

继承是面向对象编程的重要特性之一,它允许一个类继承另一个类的属性和方法,从而实现代码复用。父类(超类)是被继承的类,子类(派生类)是继承父类的类。

python 复制代码
class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        print(f"{self.name} 在发出声音")

# 继承 Animal 类
class Dog(Animal):
    def speak(self):
        print(f"{self.name} 在汪汪叫")

my_dog = Dog("旺财")
my_dog.speak()  # 输出:旺财 在汪汪叫
5.1 重写父类方法

子类可以重写(覆盖)父类中的方法,实现特定功能。

python 复制代码
class Cat(Animal):
    def speak(self):
        print(f"{self.name} 在喵喵叫")

my_cat = Cat("小花")
my_cat.speak()  # 输出:小花 在喵喵叫

6. 多态

多态是指在不同的类中实现相同的方法,尽管方法的实现不同,但它们具有相同的调用方式。多态允许不同类的对象使用相同的接口。

python 复制代码
class Animal:
    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        print("汪汪")

class Cat(Animal):
    def speak(self):
        print("喵喵")

def animal_sound(animal):
    animal.speak()

dog = Dog()
cat = Cat()

animal_sound(dog)  # 输出:汪汪
animal_sound(cat)  # 输出:喵喵

7. 封装

封装是一种将对象的属性和方法保护起来的机制,防止外部直接访问和修改。通过在属性名前加 ___,可以将其设置为"私有"或"受保护"属性。

python 复制代码
class Person:
    def __init__(self, name, age):
        self.name = name
        self.__age = age  # 私有属性

    def get_age(self):
        return self.__age

p = Person("Alice", 30)
print(p.name)    # 输出:Alice
print(p.get_age())  # 输出:30

8. 小结

面向对象编程是 Python 强大的编程范式之一,通过类和对象,我们可以组织代码并实现模块化。理解类与对象、继承、多态、封装等核心概念,可以帮助我们编写更清晰、可维护、易扩展的代码。

相关推荐
张北北.1 分钟前
【深入底层】C++开发简历4+4技能描述6
java·开发语言·c++
李永奉23 分钟前
STM32-定时器的基本定时/计数功能实现配置教程(寄存器版)
c语言·开发语言·stm32·单片机·嵌入式硬件
go546315846538 分钟前
中文语音识别与偏误检测系统开发
开发语言·人工智能·学习·生成对抗网络·数学建模·语音识别
NUC_Dodamce42 分钟前
Cocos3x 解决同时勾选 适配屏幕宽度和 适配屏幕高度导致Widget组件失效的问题
开发语言·javascript·ecmascript
一杯科技拿铁1 小时前
Go 的时间包:理解单调时间与挂钟时间
开发语言·后端·golang
小白学大数据1 小时前
基于Python的新闻爬虫:实时追踪行业动态
开发语言·爬虫·python
freed_Day1 小时前
python面向对象编程详解
开发语言·python
I'mSQL1 小时前
C#与WPF使用mvvm简单案例点击按钮触发弹窗
开发语言·c#·wpf
普郎特1 小时前
张三:从泥水匠到包工头的故事 *—— 深入浅出讲解 `run_in_executor()` 的工作原理*
python