首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python方法作为参数

python方法作为参数
EN

Stack Overflow用户
提问于 2011-08-18 20:35:33
回答 4查看 340关注 0票数 7

所以我知道在python中,所有东西都是一个“对象”,这意味着它可以作为参数传递给一个方法。但我想弄明白这到底是怎么回事。所以我尝试了下面的例子:

代码语言:javascript
运行
复制
class A:

    def __init__(self):
        self.value = 'a'

    def my_method(self)
        print self.value

class B:

   def __init__(self):
       self.values = 'b'

   def my_method(self, method):
       method()

a = A()
b = B()
b.my_method(a.my_method)

首先,写这篇文章只是为了看看它是如何工作的。例如,我知道我应该检查my_method的参数是否是可调用的。

这里的方法到底是如何传递的呢?我的意思是,我收到的输出是'a‘,所以我猜,当一个对象方法作为参数传递时,实际的对象也是这样吗?在这种情况下,当我传递a.my_method时,实例a也被传递了吗?

EN

Stack Overflow用户

发布于 2011-08-18 20:42:31

这里传递的方法到底是怎么回事?

这很容易回答:在Python中,一切都是对象:)也是函数/方法,它们是特定的函数对象,可以作为参数传递。

在这种情况下,当我传递a.my_method时,实例a也被传递了吗?

是的,在这种情况下,也会传递实例a,尽管它嵌入在function对象中并且无法检索。相反,您可以传递函数本身并为其提供一个实例。考虑以下示例:

代码语言:javascript
运行
复制
b = B()
func = A.my_method # Attention, UPPERCASE A
func(b)

这将使用B的实例调用A类方法my_method

票数 4
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7107510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档