python类使用super在__init__中调用自身

时间:2017-02-12 07:30:40

标签: python python-3.x python-2.x super

我有这样的代码:

 $post = $this->input->post();
    print_r($post);
    unset($post['submit']);
    $this->load->model('Pmodel');
    $post_data=$this->Pmodel->post_data($post);

   echo json_encode($post);

我的问题是,为什么它在class sampleClass(object): def __init__(self): super(sampleClass, self).__init__() 下称为超级?

我知道super用于调用父类__init__,(如果我错了告诉我),但这里有什么作用?

2 个答案:

答案 0 :(得分:1)

它不会调用它自己的__init__这是super的正确语法,第一个参数必须是类本身(超级将称之为其父类{{1}的类名})。

在此处阅读更多https://docs.python.org/3.6/library/functions.html#super

  

super([type [,object-or-type]])

     

返回委派的代理对象   方法调用父类或兄弟类的类型。 [第一个论点]

答案 1 :(得分:-1)

据我所知,这种类型的类定义可以区分 Python 2 中的新类型类和旧类型类。但是,Python 3 根据定义只使用新类型类。因此,如果您使用的是 Python 3,则不需要这种实现,但它有助于向后兼容。

https://www.reddit.com/r/learnpython/comments/7vou1s/what_does_object_in_class_classnameobject_do/dttx467/?utm_source=reddit&utm_medium=web2x&context=3

此链接包含有关 Python 2 和 Python 3 中类定义差异的更多信息。

基本上,如果您使用的是 Python 3,您可以将您的类定义变成这样。

C:\Users\kundan\AppData\Roaming\Python\Python39\Scripts