Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在初始化过程中只使用一次的dict是否应该放在类中?_Python_Class_Coding Style - Fatal编程技术网

Python 在初始化过程中只使用一次的dict是否应该放在类中?

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

我只需要使用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._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)