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

Python类中获取关键点:getter方法与@property哪个更Pythonic?

哪种实现更符合Python风格?

方案二使用@property装饰器的实现更符合Python风格,原因如下:

  • Python的设计哲学推崇“简单直观”,用属性形式访问(obj.right_knee)比显式调用getter方法(obj.get_right_knee())更简洁自然,符合Pythonic的代码习惯。
  • 你的_get_x_y_conf只是对numpy数组做切片提取、构造对象的轻量操作,没有复杂计算、状态修改等副作用,完全适合用属性暴露给外部。
  • 这种写法让类的接口更像普通数据对象,使用者无需记住一堆get_xxx方法名,降低了使用成本。

如果你的获取操作涉及复杂计算、IO操作或者会修改对象状态,那用方案一的显式方法会更合理,但就当前场景而言,方案二是最优选择。

补充优化建议

另外,你可以优化_get_x_y_conf里的数组访问,避免重复切片:

def _get_x_y_conf(self, start_index: int) -> YoloV7PoseKeypoint:
    """
    获取单个关键点的x、y坐标及置信度
    
    :param start_index: 从raw_keypoints数组开始读取的索引
    :return: 单个关键点的YoloV7PoseKeypoint对象
    """
    keypoint_slice = self.raw_keypoints[start_index:start_index+self._step_keypoint]
    x, y, conf = keypoint_slice[0], keypoint_slice[1], keypoint_slice[2]
    # 若_step_keypoint >=3,可直接解包:x, y, conf = keypoint_slice[:3]
    return YoloV7PoseKeypoint(x=x, y=y, conf=conf)

内容的提问来源于stack exchange,提问作者Tlaloc-ES

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:28:14