Python类的使用

img

img

在这段代码中,stu_1=Student没有括号,stu2=Student()有括号,但是效果好像是一样的?这是为什么?

不带括号相当于你给类给了个别名,但也可以用这种方式赋值。
看这篇博客:https://blog.csdn.net/lrs1353281004/article/details/81612390?spm=1001.2101.3001.6650.2&utm_medium=distribute.wap_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-81612390-blog-104551980.wap_relevant_t0_edu_mix&depth_1-utm_source=distribute.wap_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-81612390-blog-104551980.wap_relevant_t0_edu_mix

括号里是针对class自带的初始化赋值

你可以做这样两个实验:

  1. 试试print(Student.name),会发现结果和你输出stu_1.name一样。
  2. 试试在后面加上stu_3 = Student,不用给它赋值,输出它的name属性,看看是什么结果。
    这是因为python的类本身有自己的变量,可以保存自己的值。对于您所说的效果好像是一样的这个说法,对于您当前的代码来说,他们的效果是一样的,但是一旦代码复杂起来,比如出现了上述两个例子的情况,效果可能就无法预期了。

使用print(id(Student))查看其地址,会发现stu_1其实是对Student的引用,基于此,你甚至可以用stu_2 = stu_1()来等价替换stu_2 = Student()
望采纳!

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^