我的课堂上需要一个magic variable
并开始编写
class myclass:
def __init__(self, name, *args):
self.name = name
????
def myFunc()
for i in args:
print(i)
我只是找不到关于如何在构造函数中编写带有魔术变量的类并在以后使用它的正确解释。我是否必须从中创建一个self.
成员(如果可以的话),还是可以忽略它而只像myFunc
中那样使用args?
答案 0 :(得分:2)
*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)
因此,为了访问这些变量,您将对任何类实例变量进行操作,通过self.args = args
对其进行分配,然后通过self.args
进行访问
还要注意,对于类名,我们使用camel-case
,因此对于函数,类名更改为MyClass
,对于函数,snake-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
答案 1 :(得分:1)
如果将args
分配给self.args
,则可以从其他方法访问它们。但是,此方法必须接受该类的实例作为其第一个参数(请参见下面的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)