您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何将实例成员的默认参数值传递给方法?

如何将实例成员的默认参数值传递给方法?

您不能真正将其定义为认值,因为认值是在定义方法(在任何实例存在之前)时评估的。通常的模式是改为执行以下操作:

class C:
    def __init__(self, format):
        self.format = format

    def process(self, formatting=None):
        if formatting is None:
            formatting = self.format
        print(formatting)

self.format仅当formatting是时使用None

为了说明认值的工作原理,请参见以下示例:

def mk_default():
    print("mk_default has been called!")

def myfun(foo=mk_default()):
    print("myfun has been called.")

print("about to test functions")
myfun("testing")
myfun("testing again")

输出在这里

mk_default has been called!
about to test functions
myfun has been called.
myfun has been called.

注意如何mk_default只被调用了一次,那是在函数调用之前发生的!

其他 2022/1/1 18:43:42 有467人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶