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
相关产品推荐
相关产品推荐

