我有一堂课C. 我想用一个参数实例化这个类。我们称之为论证d。 所以我想做myC = C(d = 5)。 C还应该有另一个名为e的变量。在实例化类时,应将e的值设置为d。
所以我写了这个:
>>> class C:
... def __init__(self,d):
... self.d = d
... e = d
...
但是这给了我以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in C
NameError: name 'd' is not defined
好的,所以我会尝试稍微不同的东西:
>>> class C:
... def __init__(self,d):
... self.d = d
... e = self.d
...
但是这给了我这个错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in C
NameError: name 'self' is not defined
那我该怎么做呢?这应该很简单。
答案 0 :(得分:8)
您还需要e
方法的__init__
部分。在调用该函数之前,未定义d
:
class C:
def __init__(self,d):
self.d = d
self.e = d
如果您愿意,可以将它们放在同一行:
class C:
def __init__(self,d):
self.d = self.e = d
如果您需要e
作为类属性而不是实例属性,请直接引用该类:
class C:
def __init__(self,d):
self.d = d
C.e = d
或使用type(self)
:
class C:
def __init__(self,d):
self.d = d
type(self).e = d
后者意味着如果你继承C
,那么将在相应的子类上设置class属性。
答案 1 :(得分:0)
class C:
def __init__(self,d):
self.d = self.e = d