Python 面向对象编程(OOP):介绍与用法(1)

简介

面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,用于结构化和复用代码。在 Python 中,OOP 是通过使用类(Class)和对象(Object)来实现的。

类与对象

类的定义

使用 class 关键字来定义一个类。

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

对象的创建

通过调用类的构造函数(__init__ 方法)来创建对象。

python 复制代码
my_dog = Dog("Buddy")

实例方法

在类中定义的函数称为实例方法。

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

    def bark(self):
        print("Woof, woof!")

继承与多态

继承

通过继承,子类可以重用父类的代码。

python 复制代码
class Animal:
    def make_sound(self):
        print("Some generic sound")

class Dog(Animal):
    def make_sound(self):
        print("Woof, woof!")

多态

多态允许我们使用父类类型的变量来存储子类类型的对象。

python 复制代码
my_animal = Animal()
my_dog = Dog()

animals = [my_animal, my_dog]
for animal in animals:
    animal.make_sound()

封装与抽象

封装

封装是将对象的状态(属性)和行为(方法)包装在一个单一的单位中。

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

    def get_age(self):  # 访问器方法
        return self.__age

抽象

抽象是隐藏实现细节,只暴露必要的接口。

python 复制代码
from abc import ABC, abstractmethod

class Animal(ABC):
    @abstractmethod
    def make_sound(self):
        pass

静态方法与类方法

静态方法

不需要访问或修改类状态或实例状态的方法。

python 复制代码
class Dog:
    @staticmethod
    def run():
        print("The dog is running.")

类方法

需要访问类变量,但不需要访问实例变量的方法。

python 复制代码
class Dog:
    total_dogs = 0

    def __init__(self, name):
        self.name = name
        Dog.total_dogs += 1

    @classmethod
    def dog_count(cls):
        return cls.total_dogs

总结

面向对象编程(OOP)在 Python 中是一种非常有用的编程范式。它通过使用类和对象来增加代码的可读性、可维护性和可复用性。

相关推荐
Rust研习社26 分钟前
Rust Pin 解析:核心原理与异步编程实践
开发语言·后端·rust
book123_0_9926 分钟前
Spring Boot 条件注解:@ConditionalOnProperty 完全解析
java·spring boot·后端
NCIN EXPE28 分钟前
使用Springboot + netty 打造聊天服务(一)
java·spring boot·后端
涡能增压发动积29 分钟前
日志里全是 $ref,但客户端居然没事?
后端
我叫黑大帅37 分钟前
受保护的海报图片读取方案 - 在不公开静态资源目录下如何获取静态资源
后端·python·面试
我母鸡啊40 分钟前
软考架构师故事系列-嵌入式技术
后端
MXN_小南学前端1 小时前
Vue3 + Spring Boot 工单系统实战:用户反馈和客服处理的完整闭环(提供gitHub仓库地址)
前端·javascript·spring boot·后端·开源·github
JavaGuide1 小时前
太魔幻了!SpaceX官宣600 亿美元收购Agent编程的鼻祖Cursor
人工智能·后端
程序员牛奶1 小时前
Project Loom:让 Java 高并发变得更简单
java·后端
悟空瞎说1 小时前
我踩过的4个Node.js微服务经典Bug,用一个库彻底解决(2000字详解+可直接复用代码)
后端·node.js