自从我开始工作(约 6 年)以来,我一直是 .NET 的一员。最近在做一个使用Django的项目,需要并行学习Python。很多时候我碰到的 Python 代码看起来很简单,但我就是看不懂。这是其中之一。
class TypedProperty(object):
def __init__(self, name, type, default=None):
self.name = "_" + name
self.type = type
self.default = default if default else type()
有人可以向我解释一下代码的最后一行是做什么的吗?
我希望这个问题不会太琐碎,因为我很难为它想出一个好的标题。
请您参考如下方法:
a if b else c 是一个条件表达式,如果 b 的计算结果为 True,则计算结果为 a,否则为 c。在给定的上下文中,这会检查 default 是否为 "trucy" ,在这种情况下,它存储在 self.default 中。否则,将创建一个新的 type 实例并存储在 self.default 中。
请注意,此实现有几个问题:
它使用
type作为变量名,隐藏了内置的type()。这被认为是糟糕的风格。它使用条件
if default而实际上应该使用if default is None。该检查旨在测试参数default是否实际传递给了构造函数。实际上,该实现不会接受 evaluates toFalse的任何默认值。 .
