Python 在初始化过程中只使用一次的dict是否应该放在类中?
我只需要使用Operator或Act一次就可以确定我对类使用的操作。将正确的运算符存储在self中的最适合的方法是什么Python 在初始化过程中只使用一次的dict是否应该放在类中?,python,class,coding-style,Python,Class,Coding Style,我只需要使用Operator或Act一次就可以确定我对类使用的操作。将正确的运算符存储在self中的最适合的方法是什么 class m: def __init__(self,n,operator,digit1,digit2): self._operatorDict = {'+':add, '-':sub, 'x':mul, '/':truediv} self._f = self._operatorDict[operator] self._s
class m:
def __init__(self,n,operator,digit1,digit2):
self._operatorDict = {'+':add, '-':sub, 'x':mul, '/':truediv}
self._f = self._operatorDict[operator]
self._score = 0
self._range = n
self._aMin, self._aMax = getMaxMinDigits(digit1)
self._bMin, self._bMax = getMaxMinDigits(digit2)
这在很大程度上取决于要公开多少运算符或CT。在这种情况下,我可能会推荐两件事中的一件 选项1:将口述放在课堂上: 由于
\u运算符dct
不会在类中发生变异,因此似乎没有必要将其作为实例属性。然而,在某种意义上,它仍然属于阶级。此方法还允许您根据需要更改运算符ct
(例如在子类中)
选项2:将dict放入全局命名空间:
这里的优点与以前类似——主要是您只创建一个OperatorAct,而不是为
m
的每个实例创建一个OperatorAct。它也有点僵化,因为这种形式实际上不允许通过子类化轻松更改运算符或ct
。在某些情况下,这种刚性是可取的。此外,正如一些评论中所指出的,如果您使用第二个选项,命名\u OPERATOR DICT
以表明它在您的命名系统中是一个常量(例如pep8中的\u OPERATOR\u DICT
)可能是一个好主意。将其存储为类属性可能?关于命名的注意事项——如果您长期坚持使用python,如果你现在就养成使用pep8名字的习惯,你会过得更好。e、 g.M类
和运算符_dict
。还有pep8空格!谢谢你的反馈。我们需要开始通读那些材料。哦,它太干了,但最终还是值得的。如果他选择使用你的第二个选项,我建议将\u operatordct
设为常量<代码>操作员指令。“对我来说,这会使意思更清楚。”叶同意。然而,OP并没有使用pep 8名称,所以我现在还不清楚\u OPERATOR\u DICT
在该命名系统中是否表示常量;-)
class m:
_operatorDict = {'+':add, '-':sub, 'x':mul, '/':truediv}
def __init__(self,n,operator,digit1,digit2):
self._f = self._operatorDict[operator]
self._score = 0
self._range = n
self._aMin, self._aMax = getMaxMinDigits(digit1)
self._bMin, self._bMax = getMaxMinDigits(digit2)
_operatorDict = {'+':add, '-':sub, 'x':mul, '/':truediv}
class m:
def __init__(self,n,operator,digit1,digit2):
self._f = _operatorDict[operator]
self._score = 0
self._range = n
self._aMin, self._aMax = getMaxMinDigits(digit1)
self._bMin, self._bMax = getMaxMinDigits(digit2)