You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

我是否违反OOP基础规则?Python新手的OOP实现问询

关于OOP规范与实现模式的解答

嘿,作为刚接触OOP和Python的新手,你的实现已经踩对不少OOP的关键点啦!我来帮你拆解一下:

1. Queue类的分析

先看你定义的Queue类:

class Queue:
    def __init__(self):
        self.__items=[]
    def size(self):
        return len(self.__items)
  • 符合OOP规范的点:你用双下划线的__items把内部存储的列表私有化,只对外暴露size()方法获取队列长度,这完美契合了OOP的封装原则——把内部状态隐藏起来,只提供必要的操作接口,避免外部直接修改内部数据导致逻辑混乱。
  • 实现的名称:这就是标准的**队列(Queue)抽象数据类型(ADT)**的基础实现,基于Python列表存储元素。不过通常队列还会包含enqueue()(入队)、dequeue()(出队)这类核心方法,你当前版本只实现了size(),但现有部分的设计完全符合队列ADT的思路,没有特殊的设计模式名称,就是最基础的队列实现。

2. something类的分析

再看接收Queue实例的something类:

class something:
    def __init__(self,postcode):
        self.postcode = postcode
        self._original_matrix = numpy.zeros(...)
  • 符合OOP规范的点:你通过构造函数接收外部传入的Queue实例(这里参数名postcode应该指代传入的Queue对象吧?),并将其保存为实例属性,这是OOP里依赖注入的思路——类不自行创建依赖对象,而是由外部传入,能降低类之间的耦合度,让代码更灵活(比如后续可以传入不同的队列实现,只要接口兼容即可)。
  • 小建议:按照Python的PEP8编码规范,类名应该使用大驼峰命名法,也就是把something改成Something,这样代码的可读性会更好。

内容的提问来源于stack exchange,提问作者Uchoud1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:36:37