Python中类-带括号与不带括号的区别(通俗易懂)

  • Post author:
  • Post category:python




前言

通常有这个疑问应该是刚刚入门的python小白或者是已经在使用一些框架了但是基础薄弱的小伙伴(自己瞎想的····) 下面我们来详细解答



概述

首先类不带括号我们叫

赋值

,带括号我们叫

实例化



本文主要解决一下几个问题:

什么是赋值?

什么是实例化?

不带括号-赋值

带括号-实例化



什么是赋值?

来者皆客,先上杯茶(例子),你品,你细品:

>>> a = 7
>>> b = a
>>> id(7)
140712499257936
>>> id(a)
140712499257936
>>> id(b)
140712499257936
>>>

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

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

a = 7

b=a


下图是错误的理解:


错误的理解


注: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 类 –

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

作为一个萌新,自己的各方面能力都还不足,所以难免有出错,望大佬多加指正。如果这篇博客有帮到你或者觉得小7写得还可以的话,请给小7

点个赞吧!

每一个赞都是我努力前行的动力呀!谢谢啦!



版权声明:本文为s1156605343原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。