我有一长串代码,我希望在多行之间分解.我使用什么,语法是什么?
例如,添加一串字符串,
e = 'a' + 'b' + 'c' + 'd'
Run Code Online (Sandbox Code Playgroud)
并将它分成两行:
e = 'a' + 'b' +
'c' + 'd'
Run Code Online (Sandbox Code Playgroud) 从阅读PEP-8开始,我得知你应该将右括号放在与函数调用中最后一个参数相同的行上:
ShortName.objects.distinct().filter(
product__photo__stockitem__isnull=False)
Run Code Online (Sandbox Code Playgroud)
也许,长表达最好避免.但是,如果这是不受欢迎的,你将如何进行多个链式方法调用?闭幕式是否应该换新线?
ShortName.objects.distinct().filter(
product__photo__stockitem__isnull=False
).values_list('value', flat=True)
Run Code Online (Sandbox Code Playgroud)
那些无参数方法呢?如何在不引用中间返回值的情况下在多行上编写它们?
ShortName.objects.distinct(
).filter().values() # looks ugly
Run Code Online (Sandbox Code Playgroud)
更新:如何在Python中打破一系列链式方法有一个重复的问题?.该接受的答案建议开始以点每个新线的熟悉从jQuery的风格.作者没有提供任何理由或权威参考,所以我想得到关于这种风格或替代方案的确认.
我发现这个方法在python中链接,但即使有了它我也无法理解Python中的方法链接.
这里的目标是两个:解决编码问题并理解方法链(考虑到我仍然没有100%对callables有信心).
直到问题定义.
我想要一个有两个方法的类:一个设置object ='line'的参数,另一个设置覆盖'bar'.
这是我到目前为止所得到的:
class foo():
def __init__(self, kind=None):
self.kind = kind
def __call__(self, kind=None):
return foo(kind=kind)
def my_print(self):
print (self.kind)
def line(self):
return self(kind='line')
def bar(self):
return self(kind='bar')
Run Code Online (Sandbox Code Playgroud)
可悲的是,通过这段代码,我可以实现我的目标
a = foo()
a.bar().line().bar().bar().line().my_print()
Run Code Online (Sandbox Code Playgroud)
但是我希望通过编写这段代码来获得相同的结果
a = foo()
a.bar.line.bar.bar.line.my_print()
Run Code Online (Sandbox Code Playgroud)
我该如何实现这一目标?我想我定义__call__方法的方法有点不对劲.在此先感谢您的帮助.
python ×4
pep8 ×2
callable ×1
coding-style ×1
django ×1
formatting ×1
line-breaks ×1
long-lines ×1
sqlalchemy ×1
syntax ×1