【问题标题】:passing all init variables to self将所有初始化变量传递给 self
【发布时间】:2022-07-19 16:39:00
【问题描述】:

是否有一种标准方法可以将__init__() 中定义的所有参数传递给整个类(作为自参数)?

例如在我的程序中,我通常会这样做:

class DummyClass():
   def __init__(self,x,y,z):
      self.x = x
      self.y = y
      self.z = z
      ...

有没有办法在不单独传递每个参数的情况下做同样的事情?我想我曾经在super() 看到过类似的事情。

【问题讨论】:

  • 是的,可以使用一些技巧来完成,但不建议更好地编写干净的代码。如果您的要求是在多个类中初始化这些相同的变量,那么您绝对可以使用继承,使用 super 关键字。

标签: python oop


【解决方案1】:

根据this 的回答,您可以这样做:

class X(object):
    def __init__(self, x, y, z):
        vars = locals() # dict of local names
        self.__dict__.update(vars) # __dict__ holds and object's attributes
        del self.__dict__["self"] # don't need `self`

更 Pythonic 的答案是使用数据类

@dataclass
class X:
    x: float
    y: float
    z: float

【讨论】:

    猜你喜欢
    • 2023-03-06
    • 2020-06-14
    • 2014-08-17
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多