super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。总之前人留下的经验就是:保持一致性。要不全部用类名调用父类,要不就全部用 super,不要一半一半。
普通继承
复制代码 代码如下:
class FooParent(object):
def __init__(self):
self.parent = ‘I\’m the parent.’
当在子类需要调用父类的方法时,在python2.2之前,直接用类名调用类的方法,即非绑定的类方法,并把自身对象self作参数传进去。
class A(object):
def say(self):
print 'I am A'
class B(A):
def say(self):
print 'I am B'
A.say(self)
b = B()
b.say()
输出
I am B
I am A
这样运作挺好,不过有个问题,当父类改了名字时,就要
首先看一下super()函数的定义:
super([type [,object-or-type]])
Return a **proxy object** that delegates method calls to a **parent or sibling** class of type.
返回一个代理对象, 这个对象负责将方法调用分配给第一个参数的一个父类或者同辈的类去完成.
parent or sibling class 如何确定?
第一个参数的__mro__属性决定了搜索的顺序, su
ES6对象的super关键字
super是es6新出的关键字,它既可以当作函数使用,也可以当作对象使用,两种使用方法不尽相同
1.super用作函数使用的时候,代表父类的构造函数,es6规定在子类中使用this之前必须先执行一次super函数,super相当于Father.prototype.constructor.call(this)
class Father{
constructor(){
this.a = 1;
}
}
class Son extends F
超级租房
本自述文件概述了与此Ember应用程序进行协作的细节。 此应用程序的简短介绍可以轻松地转到此处。
先决条件
您需要在计算机上正确安装以下物品。
(使用npm)
安装
git clone 此存储库
cd super-rentals
npm install
运行/开发
ember serve
访问您的应用程序,为 。
访问您的测试,为 。
代码生成器
利用许多生成器生成代码,尝试使用ember help generate更多详细信息
运行测试
ember test
ember t