python – 将“x if x is not else y”重构为“x或y”
发布时间:2020-12-20 11:48:43 所属栏目:Python 来源:网络整理
导读:我遇到了一段 Python代码,技术上看起来像这样: def bar(b): return b*2class MyClass(object): def __init__(self,a): self.a = a self.b = 10 def foo(self,b=None): return bar(b if b is not None else self.b) 因此,类具有b作为固定属性,如果在没有参数
我遇到了一段
Python代码,技术上看起来像这样:
def bar(b): return b*2 class MyClass(object): def __init__(self,a): self.a = a self.b = 10 def foo(self,b=None): return bar(b if b is not None else self.b) 因此,类具有b作为固定属性,如果在没有参数的情况下调用它,则将其用作classmethod foo的默认输入. 请假设在这种情况下b应该是浮点数. 请忽略未使用的self.a,否则使用它 – 我只是想确保您看到构造函数可以设置属性. 用法如下所示: c = MyClass(2) c.foo(3) # returns 3*2 = 6 c.foo() # returns 10*2 = 20 在这种情况下,我想知道foo方法.这是将self.b实现为b的默认值的好方法吗? 以下两个建议中的一个或多或少是我的愿望吗?如果是这样:为什么? def foo(self,b=None): return bar(b or self.b) 要么 def foo(self,b=self.b): return bar(b) 解决方法
坚持第一个选择:
def foo(self,b=None): return bar(b if b is not None else self.b) 如果您使用第二个选项: def foo(self,b=None): return bar(b or self.b) 那么你将改变x.foo(0)的行为,因为零也是假的. 第三种选择不是一种选择: def foo(self,b=self.b): return bar(b) 定义方法foo()时self不存在,因此不能将self.b用作默认参数.定义将失败;或者更糟糕的是,当执行定义时,它将尝试使用self的当前值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |