gpt4 book ai didi

python - python中成员函数的默认值

转载 作者:行者123 更新时间:2023-11-28 23:04:10 25 4
gpt4 key购买 nike

class foo():
def __init__(self,a):
self.A=a

def foo2(self,aa=self.A):
return "la"
@classmethod
def test(cls):
d=foo()
d.foo2()

成员函数 foo2 找不到 self.A 和 A。是不是因为 A 没有在类内部全局设置?

最佳答案

关键字参数,例如 aa,不能采用 self 的默认值。关键字参数是在定义 方法时评估的,而不是在调用方法时评估的。通常,通过将 aa 的默认值设置为 None 可以实现您的尝试:

class foo():
def __init__(self, a):
self.A = a
def foo2(self, aa=None):
if aa is None:
aa = self.A
return 'la'

还要注意,由于关键字参数默认值是在定义时评估的,而不是执行时,foo2所有 调用共享它们的默认参数,即使从 的不同实例调用也是如此富。在使用以下方法时,这通常会使新的 Python 程序员感到困惑:

def footoo(a=list()):
a.append(1)
return a

所有对 footoo 的调用都会得到相同列表对象;每次通话都不是新的。所以重复调用 footoo 将导致以下结果:

>>> footoo()
[1]
>>> footoo()
[1, 1]
>>> footoo()
[1, 1, 1]

关于python - python中成员函数的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7904318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com