类不带括号我们叫赋值,带括号我们叫实例化。

什么是赋值?

a=7
b=a
id(7)
140726814208448
id(a)
140726814208448
id(b)
140726814208448

从上面例子中我们可以看出变量a赋值7、b赋值a,它们的内存地址都是相同的。

它们是指向了同一个内存地址,而不是 b 指向 a 然后a在指向内存地址。

Python中类-带括号与不带括号的区别_实例化

Python中类-带括号与不带括号的区别_赋值_02

不是:

Python中类-带括号与不带括号的区别_内存地址_03

注:id() 函数用于获取对象的内存地址。

什么是实例化?

“类提供默认行为,是实例的工厂”

怎么理解这句话呢?所谓工厂,就是可以用同一个模子做出很多具体的产品。类就是那个模子,实例就是具体的产品。所以,实例是程序处理的实际对象。

类是由一些语句组成,但是实例,是通过调用类生成,每次调用一个类,就得到这个类的新的实例。

不带括号-赋值

class Tea:
def __init__(self):
print('Dahongpao Tea')


a = Tea
print(id(Tea)) # 2186368764424
print(id(a)) # 2186368764424
print(a) # <class '__main__.Tea'>
print(Tea) # <class '__main__.Tea'>

从上面例子中输出的内容我们可以看出:

a = Tea类 所指向的是同一内存地址,而在第一点我们已经知道,赋值就是指向同一内存地址,所以得出不带括号的是赋值。

带括号-实例化

class Tea:
def __init__(self):
print('Dahongpao Tea')

b = Tea()
print(id(Tea))
print(id(b))
print(Tea)
print(b)

输出结果为:

Dahongpao Tea     # 这是__init__输出的
1386207499400 # print(id(Tea))
1386196961736 # print(id(b))
<class '__main__.Tea'> # print(Tea)
<__main__.Tea object at 0x00000142BFC709C8> # print(b)

从上面例子中输出结果最后我们可以知道

b为Tea类实例化一个对象而且他们的内存地址也一样了

python 类 - 带括号是实例化,不带括号是赋值。

————————————————