我正在使用python中的一个类,我不知道是否可以在其中一个方法中分配一个对象。例如:
class foo:
def __init__(self):
self = <something>
该作业(第3行)是否正确?
答案 0 :(得分:2)
您可以指定名称self
,但不会“分配给对象”。它不会对对象产生任何影响。它只是为名为self
的局部变量赋值。
答案 1 :(得分:2)
self
是对象的引用。如果为其分配,则更改变量self引用的对象,但不会修改该方法之外的任何对象。
该功能类似于以下代码:
def change(a):
a = 10
print(a) # prints 10
x = 5
change(x)
print(x) # prints 5
答案 2 :(得分:2)
不,它不会“分配给对象”。基本上,您的代码将执行两项操作:
创建self
的本地变量foo.__init__
:
>>> class foo:
... def __init__(self):
... self = 'hi'
... print(self)
...
>>> foo()
'hi'
>>>
之后,在初始化类self
时给foo.__init__
的{{1}}参数将被覆盖。换句话说,在该行之后,您无法再为foo
创建实例属性:
foo
总之,你可以做你所描述的,但你真的不应该这样做。它对您的代码没有任何积极作用。相反,它很可能会在以后引起问题。即使它没有,它仍然会使阅读代码的人感到困惑。
也许通过“分配给对象”,你的意思是你想为>>> class foo:
... def __init__(self):
... self = 'hi'
... print(self)
... self.attr = 'hello'
...
>>> foo()
hi
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 5, in __init__
AttributeError: 'str' object has no attribute 'attr'
>>>
创建一个实例属性?如果是这样,那么语法将是这样的:
foo
以下是演示:
class foo:
def __init__(self):
self.<attribute name> = <something>