majian890324 发表于 2020-6-20 23:18:47

类到底需不需要加括号?

定义一个类:class 类名:(类名第一个字母要大写)
但是类名后面需不需要加括号呢?
比如:class A:和class A():

我看课后题或者其他鱼油的问题什么的,有的加了,有的没加,这个括号是加还是不加,还是看自己心情?加与不加有什么区别吗?

继承父类需要加括号,这个我知道,但是有时候括号里是空的呀,啥都没有!


java2python 发表于 2020-6-20 23:23:11

不用纠结了,括号里面啥都没有,应该是可以不加的,按照Python的特性,要加也行,毕竟有强迫症的程序员,不能不许他们使用python。。。

wuqramy 发表于 2020-6-20 23:24:13

本帖最后由 wuqramy 于 2020-6-20 23:42 编辑

可以不加,也可以加
为了省事,我不会加
除了一个情况,就是继承类的时候
括号里就要填父类名
还有在实例化类时候,要记得给类名带上括号

Twilight6 发表于 2020-6-20 23:40:32



准确的说定义类时候如果不继承,那么加和不加都是一样的,默认继承 object 类

但是要注意的是:实例化类时候,要记得带上括号,否则就是给这个类取了个别名,而加上括号才算实例化对象了

永恒的蓝色梦想 发表于 2020-6-21 08:01:43

class A:
等于
class A():
等于
class A(object):

heidern0612 发表于 2020-6-21 09:51:56

本帖最后由 heidern0612 于 2020-6-21 09:57 编辑

楼上几位大佬回的都差不多了,我再啰嗦几句。

类加括号是经典类,不加括号是新式类。

在python2中,经典类继承模式是深度优先,而新式类采用的是广度继承,这就导致继承的MRO顺序会不同。

而在python3中,经典类和继承类都是沿用的广度优先继承,所以基本没什么区别了。

现在沿用的大致就是python默认规定的,不加括号采用新式类,你想加也没问题。

具体可以参考下这个:戳我前进

java2python 发表于 2020-6-21 09:53:37

heidern0612 发表于 2020-6-21 09:51
加括号是经典类,不加括号是新式类。

在python2中,经典类继承模式是深度优先,而新式类是广度优先继承 ...

哦,还有这个说法,厉害了大佬
页: [1]
查看完整版本: 类到底需不需要加括号?