我想生成一个class
,其中输入元素的数量由True
或False
的条件决定。我试过这样的方法
class Test:
def __init__(self, cond):
self.cond = cond
if cond == True:
def __call__(self, a, b, c):
d1 = a + b + c
return d1
elif cond == False:
def __call__(self, a, b):
d2 = a + b
return d2
result1 = Test(cond=True)(a, b, c)
result2 = Test(cond=False)(a, b)
但它显然不起作用,它提供了以下错误:
TypeError: 'Test' object is not callable
我怀疑我使用了错误的def
,因为在这种情况下__init__
可能不合适。你知道吗
class
最具python风格的方法是什么?你知道吗class
来实现这一点吗?你知道吗我知道使用def
函数而不是class
会相当容易。你知道吗
不要做条件函数定义。你知道吗
另外,不要做
if cond == True:
和elif cond == False:
之类的比较,这也是一种反模式。如果cond
应该是一个布尔值,if cond:
和else:
是非常好的。你知道吗我会重组你的代码。在
__init__()
中添加条件或逻辑不是一个好主意,因为它只用于初始化变量。你知道吗相反,应该将dunder
__call__()
分开,以便在类实例化时调用它。你知道吗首先,避免这种情况的一种常见方法是定义一个子类。你知道吗
表面上看,这很难算是一种改进;但在可能在多个地方使用条件语句的情况下,这种重组可以很快得到丰厚的回报。你知道吗
相关问题 更多 >
编程相关推荐