Python 类定义

8 投票
5 回答
1769 浏览
提问于 2025-04-16 13:26

有时候我看到一些类被定义为对象类的子类,比如:

class my_class(object):
    pass

那么这和简单的定义有什么不同呢,比如:

class my_class():
    pass

5 个回答

3

在Python 2.x中,如果你想使用新式类,你必须明确地从object继承。如果你不声明一个类继承自object,那么这个类就是旧式类。而在Python 3.x中,就不再需要明确继承自object了,所以你可以直接用Python 2.x的旧式类语法来声明,比如class Klass: pass,这样就会得到一个新式类(或者说就是一个类)。

4

第一个是新的样式类,第二个是旧的样式类。

编辑

In [1]: class A:
   ...:     pass
   ...: 

In [2]: class B(object):
   ...:     pass
   ...: 

In [3]: a = A()

In [4]: b = B()

In [5]: dir(a)
Out[5]: ['__doc__', '__module__']

In [6]: dir(b)
Out[6]: 
['__class__',
 '__delattr__',
 '__dict__',
 '__doc__',
 '__format__',
 '__getattribute__',
 '__hash__',
 '__init__',
 '__module__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__']
8

这个语法用来声明一个新式类

撰写回答