Python 类里面的方法太多写得太长,大家是怎样处理的啊 🎏
Python 类里面的方法太多写得太长,大家是怎样处理的啊 🎏
13 回复
写少一点短一点
这种情况我一般用两种方式处理。
如果方法逻辑复杂但确实是一个完整功能,我会拆成多个私有方法。比如一个处理订单的方法,可以拆成 _validate_order()、_calculate_price()、_update_inventory() 几个小方法,主方法只负责调用。
class OrderProcessor:
def process_order(self, order_data):
self._validate_order(order_data)
total = self._calculate_price(order_data)
self._update_inventory(order_data)
return total
def _validate_order(self, data):
# 验证逻辑
pass
def _calculate_price(self, data):
# 计算价格
pass
def _update_inventory(self, data):
# 更新库存
pass
如果方法职责不单一,我会考虑提取到单独的类里。比如用户类里既有用户信息管理又有复杂的权限检查,就把权限相关逻辑抽到 PermissionChecker 类。
class User:
def __init__(self):
self.permission_checker = PermissionChecker()
def can_access(self, resource):
return self.permission_checker.check(self, resource)
class PermissionChecker:
def check(self, user, resource):
# 复杂的权限检查逻辑
pass
总结:单一职责,合理拆分。
在利用各种括号直接转行。
按职责再拆成几个小的
参考 code smell 里面的 feature envy 和 super class / god class
拆分成更小的类
写到别的文件里然后 import 过来! 眼不见为净!
a = 很长的类的前半段
b = a.很长的类的后半段
不嫌弃长,能准确充分表达方法用途目的就好,想着一年后直接看到方法名就可以立即知道它是干嘛的,
而不用再去看注释/翻文档 (假若它们都有的话…)
举些例子看看 最好是从命名就大概知道含义的
y 用继承啊,基础的东西写个类,复杂的再写个类继承基础的类,
Composite Pattern 了解一下
代码都不给,怎么分析?
Mixin, 继承了解一下

