是否可以将实例变量作为方法关键字的默认值传递?

米歇尔

这将不起作用:

class myClass:

    def __init__(self, name):
        self.name = name

    def methodA(self, name=self.name):
        print(f"Hello {name}!")

myInstance = myClass("Frank")

因为:

NameError: name 'self' is not defined

问题

  1. 这是为什么?self.name不是在类的初始化已经定义?
  2. 有没有一种方法可以name在初始化类实例时定义,同时还可以在同时调用特定方法时更改其值?我不想myInstance.name = "Peter"在调用方法之前总是用单独的一行更改其值(例如,像这样:)。而且,我也不想被迫使用关键字传递它(例如,像这样:def methodB(self, name=name_typed_when_calling_method)每次我调用使用该变量的方法时)。
切普纳

self在评估默认参数(即方法定义时)时,未定义它只是一个函数参数,在调用方法时绑定到参数

你需要做的是使用一个前哨(像什么None)作为默认值,并检查该在方法的主体内self 定义。

class myClass:

    def __init__(self, name):
        self.name = name

    def methodA(self, name=None):
        if name is None:
            name = self.name
        print(f"Hello {name}!")

myInstance = myClass("Frank")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

vba中是否有任何关键字可以清除网站中的默认值以替换为新值?

在robotframework中,是否可以将关键字传递给变量?

可以在不提供默认值的情况下使用关键字参数吗?

设置关键字参数的默认值时,可以引用位置参数吗?

在Python中,赋值运算符在类方法定义中作为默认值传递时是否访问类或实例变量?

如何将关键字作为可以传递给 update-in 的参数传递?

如何将变量值作为关键字参数键传递?

期望将特定类的实例作为关键字参数

将java.lang.Number的实例传递给方法时的final关键字

将字典作为关键字参数传递给函数

将块作为关键字参数传递

SSRS:是否可以将参数值传递给SQL查询中的“ Values”关键字?

如何将字符串作为关键字参数传递给方法

将关键字参数和具有默认值的参数混合会重复哈希吗?

Python3-用于类型默认值的默认关键字?

是否可以在Spring的@Value批注中将键作为默认值传递

在F#中,是否可以将对可变的默认值的引用作为参数传递?

将字典列表作为字典关键字的值

是否可以使用`constexpr`模板变量作为正式模板参数的默认值

将final关键字添加到继承/重写的方法是否可以?

将类属性定义为实例变量的默认值是否惯用

如何在Python的静态方法中将类变量作为默认值传递

如何在Python中访问关键字参数的默认值?

Racket中关键字和函数参数默认值的宏

如何在Ruby中将关键字arg设置为默认值undefined

namedtuple和可选关键字参数的默认值

可选关键字参数的命名元组和默认值

除非指定,否则使用非默认值填充可选关键字参数

如何在关键字中为可选列表参数设置默认值