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