Skip to main content
 首页 » 编程设计

Python:如何根据参数将类变量设置为 __init__()

2025年05月04日13me-sa

我有一个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 

那么我应该如何做我想做的事情呢?这应该很简单。

请您参考如下方法:

您还需要使 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 属性。