gpt4 book ai didi

Python:变量、继承和默认参数

转载 作者:太空狗 更新时间:2023-10-30 01:45:07 25 4
gpt4 key购买 nike

我想我对Python中“类”和“继承”的用法有一些误解。我将我的问题简化如下:

class A:
def __init__(self):
self.data = 100

class B(A):
def b(self):
print self.data

>>>B().b()
>>>100

好的,到目前为止一切顺利。但是,如果我创建另一个类,就会出错,如下所示:

class C(A):
def c(self, num=self.data):
print self.data

>>>C().c()
NameError: name 'self' is not defined

我想将'num'的默认值设置为self.data,即'100'。没有'class',它会简单得多:

data = 100
def d(num = data):
print num

>>>d()
>>>100

我已经搜索了一些文章,但仍然陷入这个问题......提前致谢!

最佳答案

当你这样做时:

class C(A):
def c(self, num=self.data):
print self.data

你正在做类似的事情:

>>> def d(num, data=num):
... print(num, data)
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'num' is not defined

如你所见,python 编译器不知道第二个 num 是什么。

但是没有什么能阻止你做这样的事情:

class C(A):
def c(self, num=None):
print num or self.data

或使用明确的None 检查:

class C(A):
def c(self, num=None):
if num is None:
num = self.data
print num

关于Python:变量、继承和默认参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9294914/

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