方法可以有Python中的方法吗?

2024-10-02 22:26:52 发布

您现在位置:Python中文网/ 问答频道 /正文

这可能看起来有点奇怪,但这会为我完成一点代码提供一个方便的方法。在

因为Python方法本身就是对象,所以方法可以有自己的方法吗?也就是说,如果我想执行以下操作(忽略语法):

def methodCaller(someArgs, methodB):
    # some stuff here . . .
    variableWithAGoodName = methodB()
    jonSkeet = methodB.methodC(variableWithAGoodName)
    return jonSkeet

有可能吗?我的猜测是否定的,但是如果方法只是对象,那么它不应该是可能的吗?在

非常感谢你!在

编辑:我想正如已经发布的,我正在寻找一个高阶函数。在

我的问题有点学术性,因为我知道我可以重新组织我的代码,以完全不同的方式来做这种事情。但是,事实上,我正在用Python做实验,至少要学习它的基本知识。我还没有尝试过,但是由于我对Python不熟悉,所以有可能这样做,只是不使用这种语法。在

另一个编辑:我试图搞笑我的名字,但它使问题不清楚。为此我道歉。下面是一个更好的例子:

^{pr2}$

Tags: 对象方法代码编辑heredef语法some
2条回答

python中的函数是一类具有方法和属性的对象。在

def foo():
    print("foo")

def bar():
    print("bar")

foo.bar = bar
foo.bar()                  #outputs "bar"

foo.baz = "Hello, world!"
print(foo.baz)             # outputs "Hello, World!"

编辑:

因为函数是一级对象,所以也可以像传递其他变量一样传递它们。您还可以编写“高阶函数”,即函数的函数(或返回函数的函数)

编辑2:

唱着“没有比S俱乐部派对更棒的派对了!”]没有比完整代码示例更好的例子了!在

^{pr2}$

是和否。很明显,它们可以被赋予与方法类似的属性。此外,函数附带已经附加的方法-例如,__call__方法,它与函数一起调用。在

但是,要向对象添加方法,您通常会做什么?子类化对象的类,并添加方法。但是,如果您尝试子类化函数

imports types
class F(types.FunctionType):
    pass

你会得到这个错误

^{pr2}$

如果你想创建一个“可调用”的对象,它可以有方法和使用继承,可以尝试这样的方法。在

class MyCallable(object):
    def __init__(self):
        self.message = "Look ma, I got called!"

    def __call__(self, *args, **kwargs):
        self.print_message()

    def print_message(self):
        print(self.message)


class CallableChild(object):
    def __call__(self, *args, **kwargs):
        super(CallableChild, self).__call__(*args, **kwargs)
        print "...as a child, too!"

相关问题 更多 >