如何实现/定义一个python函数/方法,如" print"?

时间:2013-08-22 02:34:23

标签: python function printing

我想实现一个函数,比如说“foo”,这样就可以按如下方式输入参数:

foo“test”,或foo<< “test”,...,即没有括号,而不是明确地调用foo(“test”),就像我们调用内置函数“print”一样。

任何人都知道解决方案/提示?

感谢。

1 个答案:

答案 0 :(得分:3)

在Python2中,print不是函数,它是一个语句,因此它可以打破常规规则。

但是,您可以使用__lshift____rshift__方法

编写课程
class X(object):

    def __lshift__(self, n):
        print "<< "*n

    def __rshift__(self, n):
        print ">> "*n

这些方法可以做任何你喜欢的事情

>>> X() << 5
<< << << << << 
>>> X() >> 10
>> >> >> >> >> >> >> >> >> >> 

所以你可以像这样模拟你的主叫想法

class X(object):

    def __call__(self, *args, **kw):
        print "called with ", args, kw

    def __lshift__(self, n):
        return self(n)

这并不是一个好主意,但有时候玩这样的事情会产生好的想法