如何在 Class 的构造函数中处理魔法变量

How to handle magic variables in a constructor of a Class

我的 class 中需要一个 magic variable 并开始编写它

class myclass:
    def __init__(self, name, *args):
        self.name = name
        ????

    def myFunc()
        for i in args:
            print(i)

我只是找不到关于如何在构造函数中编写带有魔法变量的 class 并在以后使用它的正确解释。我是否必须从中创建一个 self. 成员(如果是的话如何创建)或者我可以忽略它并像在 myFunc 中那样使用 args 吗?

如果您将 args 分配给 self.args,您可以通过其他方法访问它们。但是,此方法必须接受 class 的实例作为其第一个参数(请参阅下文 myFunc 现在如何采用 self)。

class myclass:
    def __init__(self, name, *args):
        self.name = name
        self.args = args

    def myFunc(self):
        for i in self.args:
            print(i)

*args不叫魔术变量,而是arbitrary argument lists,或variadic arguments,它们用来向函数发送任意数量的参数,它们被包裹在一个元组如下例

In [9]: def f(a,*args): 
   ...:     print(a) 
   ...:     print(args) 
   ...:                                                                                                                                                                           

In [10]: f(1,2,3,4)                                                                                                                                                               
1
(2, 3, 4)

因此,为了访问这些变量,您可以对任何 class 实例变量执行相同的操作,通过 self.args = args 分配它并通过 self.args [=22= 访问它们]

另请注意,我们使用 camel-case 作为 class 名称,因此 class 名称更改为 MyClasssnake-case 函数,因此函数名称更改为 my_func

class MyClass:
    def __init__(self, name, *args):
        self.name = name
        #Assigning variadic arguments using self
        self.args = args

    def my_func(self):
        #Accessing variadic arguments  using self
        for i in self.args:
            print(i)


obj = MyClass('Joe',1,2,3)
obj.my_func()

输出将是

1
2
3