繁体   English   中英

在 Python 中使用 arguments 进行双重方法调用的含义

[英]Meaning of doubled method call with arguments in Python

我在这里有这一行:

ex.format(’order’).format(’third’, ’second’, ’first’)

这种“格式”的双重调用是如何调用的? 如何实施? 计划是检查参数是否为“顺序”,然后安排由“第三”、“第二”、“第一”等词组成的新字符串。 但我不知道如何实现它。 我什至找不到这是怎么称呼的。

请给我一个简单的例子。 使用方法 meow 和方法调用的单个 class:

meow("two times").meow("a", "b", "c")
meow("one time").meow("a", "b", "c")

and output: abcabc
and output: abc

这称为“方法链接”,当第一个方法调用返回一个 object 时,可以调用第二个方法时,这才有意义。

在您的示例中,如果ex是字符串,则ex.format('order')是另一个字符串,因此可以立即调用其.format方法来生成另一个字符串。

您建议的代码没有多大意义,因为首先,您正在传递一个字符串,其中包含一个用单词编写的数字,而将数字作为int传递是有意义的; 其次,单个meow方法不能(或至少不应该)既设置重复次数,产生重复先前设置次数的字符串。 但是,可以通过编写两个单独的方法(实际上一个 function 和一个方法)来实现您要求的行为:

def meow(n):
    return Repeater(n)

class Repeater:
    def __init__(self, n):
        self.n = n
    def meow(self, *strings):
        return ''.join(strings) * self.n

用法:

>>> meow(2).meow('a', 'b', 'c')
'abcabc'
>>> meow(1).meow('a', 'b', 'c')
'abc'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM