ami*_*mel 4 python variables inheritance class self
我想我对Python中"class"和"inheritance"的使用有一些误解.我将简化我的问题如下:
class A:
def __init__(self):
self.data = 100
class B(A):
def b(self):
print self.data
>>>B().b()
>>>100
Run Code Online (Sandbox Code Playgroud)
好的,到目前为止一切顺利.但是,如果我创建另一个类,则会出现问题,如下所示:
class C(A):
def c(self, num=self.data):
print self.data
>>>C().c()
NameError: name 'self' is not defined
Run Code Online (Sandbox Code Playgroud)
我想将'num'的默认值设置为self.data,即'100'.没有'class',它会更简单:
data = 100
def d(num = data):
print num
>>>d()
>>>100
Run Code Online (Sandbox Code Playgroud)
我已经搜索了一些文章,但仍然坚持这个问题...提前谢谢!
Rik*_*ggi 10
当你这样做:
class C(A):
def c(self, num=self.data):
print self.data
Run Code Online (Sandbox Code Playgroud)
你做的事情是这样的:
>>> 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
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,python编译器不知道第二个num
是什么.
但没有什么可以阻止你做以下事情:
class C(A):
def c(self, num=None):
print num or self.data
Run Code Online (Sandbox Code Playgroud)
或明确None
检查:
class C(A):
def c(self, num=None):
if num is None:
num = self.data
print num
Run Code Online (Sandbox Code Playgroud)