自从我开始工作(约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()
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释一下代码的最后一行是做什么的吗?
我希望这个问题不是太微不足道,因为我无法想出一个好的头衔.
a if b else c是条件表达式,其值a如果b计算结果为True,以及c以其他方式.在给定的上下文中,这将检查是否default为"trucy",在这种情况下它将被存储self.default.否则,将type创建并输入一个新实例self.default.
请注意,此实现有几个问题:
它type用作变量名称,遮蔽内置函数type().这被认为是不好的风格.
它使用if default实际if default is None应该使用的条件.该检查旨在测试参数default是否实际传递给构造函数.实际上,实现不会接受任何求False值的默认值.