Python类名称后面, 什么时候需要写参数, 什么时候不需要?

最近在整理python面向对象的知识, 看了些网上不同的资料, 然发现一个小问题: 有的例子里面, 类名称后面写有参数, 有的没写.

所以很奇怪, Python类名称后面, 什么时候需要写参数, 什么时候不需要? 判断标准是什么呢?

比如下面两个例子, 都可以正常运行, 更加疑惑了.

# 父类类名, 不带参数.
class Animal():
    def run(self):
        print('父类, Animal is running...')
class Dog(Animal):
    def run(self):
        print('Dog is running...')

    def eat(self):
        print('Eating meat...')

class Cat(Animal):
    pass
dog = Dog()
dog.run()

cat = Cat()
cat.run()
# 父类类名后面, 带参数.
class Animal(object):
    def run(self):
        print('父类, Animal is running...')
class Dog(Animal):
    def run(self):
        print('Dog is running...')

    def eat(self):
        print('Eating meat...')

class Cat(Animal):
    pass
dog = Dog()
dog.run()

cat = Cat()
cat.run()
阅读 2.8k
2 个回答

对于没有父类的类,不需要加括号或者加 object

class Animal():
    def run(self):
        print('父类, Animal is running...')

class Animal(object):
    def run(self):
        print('父类, Animal is running...')

这种都是 python2 的写法,python3可以兼容,但是没有意义

python3 只要

class Animal:
    def run(self):
        print('父类, Animal is running...')

括号里事基类。括号是空的就是没有基类(或者说,基类是 object)。

所以你的例子,第一个大家都是无关的类。

因为每一个类都定义了自己的 run ,所以看起来是一样的。你把除了 Animal 之外的其他类里的 run 删了,就看到不同了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题