【发布时间】:2018-10-02 15:26:27
【问题描述】:
最近我一直在尝试类和对象,并陷入了一个疑问。我试过谷歌搜索,但我不明白要搜索什么。下面是代码sn-p。
class Demo:
def __init__(self):
print("In init")
def __call__(self,item):
print("Got {} in call".format(item))
def print(self):
print("Evaluating print()")
现在完成上述程序后,我尝试了以下几个命令:
>>>a=Demo
>>>a.print()
Traceback (most recent call last):
Python Shell, prompt 3, line 1
builtins.TypeError: print() missing 1 required positional argument: 'self'
>>>a.print(a)
Evaluating print()
>>>b=Demo()
In init
>>>b.print()
Evaluating print()
>>>type(a)
<class 'type'>
>>>type(b)
<class '__main__.Demo'>
在这种情况下我的问题是:
1)创建对象时a=Demo和b=Demo()有什么区别?
2) 为什么a.print() 在第一种情况下不起作用但a.print(a) 工作正常?
3) 在这种情况下,b('item') 将输出为Got item on call,这在a('item') 的情况下不起作用。为什么会这样?
注意 :: 我为此使用 Python 3.6
【问题讨论】:
标签: python python-3.x class object instance