假设我有一个非常简单的类,如下所示:
class myClass:
def __init__(self):
self.myProp = 2
如果我使用括号进行实例化,一切都按照我的期望工作:
>>> a = myClass()
>>> a.myProp
2
然而,如果在上述两行中我不使用括号,即:
>>> a = myClass
我遇到了以下错误:
>>> a.myProp
Traceback (most recent call last):
File "<pyshell#45>", line 1, in <module>
a.myProp
AttributeError: class myClass has no attribute 'myProp'
如果我打印这个对象,
>>> a = myClass
>>> a
我理解
<class __main__.myClass at 0x0275C538>
似乎 `a` 是该类的实例,但某种方式没有初始化。在其他语言中,如果尝试将一个未初始化的类实例转换为对象,则会出现编译错误(例如,在 C# 中,`myClass a = new myClass();` 可以正常工作,但是 `myClass a = new myClass;` 会返回编译错误)。因此,我的问题是:从技术角度来讲,没有括号的 `a = myClass` 对象是什么?