i***r 发帖数: 1035 | 1 class Reader(object):
def __init__(self,filename=None):
super(Reader, self).__init__()
最近研究大牛的code,这个地方甚是不解。
为什么要call super.__init__(), 在这里的 super class 只是object?
thanks | d********g 发帖数: 10550 | 2 这是override constructor,new style的class,super class就是object。没规定一
定要super,如果你不要基类的constructor的话。不光是__init__(),任何method都是
这个道理,要扩展(重用之前的代码)就是super,不super就是直接覆盖
因为object本身是不接收args、kwargs的所以可以这样简写,如果是从别的有可能接受
args的class继承,为了安全一般还得这样写:
class Reader(BaseClass):
def __init__(self, filename=None, *args, **kwargs):
super(Reader, self).__init__(*args, **kwargs)
# 然后再处理你自己的filename
Python 3里可以把super(Reader, self)简化成super()
【在 i***r 的大作中提到】 : class Reader(object): : def __init__(self,filename=None): : super(Reader, self).__init__() : 最近研究大牛的code,这个地方甚是不解。 : 为什么要call super.__init__(), 在这里的 super class 只是object? : thanks
| i***r 发帖数: 1035 | 3 多谢详解,非常清楚。
这里的super只是base 的 object,call super是不是有点多此一举?
base object应该没有implement信息 | d********g 发帖数: 10550 | 4 不算多此一举,有专门的讨论:
http://stackoverflow.com/questions/8611712/what-does-objects-in
【在 i***r 的大作中提到】 : 多谢详解,非常清楚。 : 这里的super只是base 的 object,call super是不是有点多此一举? : base object应该没有implement信息
| i***r 发帖数: 1035 | 5 class Reader(object):
def __init__(self,filename=None):
super(Reader, self).__init__()
最近研究大牛的code,这个地方甚是不解。
为什么要call super.__init__(), 在这里的 super class 只是object?
thanks | d********g 发帖数: 10550 | 6 这是override constructor,new style的class,super class就是object。没规定一
定要super,如果你不要基类的constructor的话。不光是__init__(),任何method都是
这个道理,要扩展(重用之前的代码)就是super,不super就是直接覆盖
因为object本身是不接收args、kwargs的所以可以这样简写,如果是从别的有可能接受
args的class继承,为了安全一般还得这样写:
class Reader(BaseClass):
def __init__(self, filename=None, *args, **kwargs):
super(Reader, self).__init__(*args, **kwargs)
# 然后再处理你自己的filename
Python 3里可以把super(Reader, self)简化成super()
【在 i***r 的大作中提到】 : class Reader(object): : def __init__(self,filename=None): : super(Reader, self).__init__() : 最近研究大牛的code,这个地方甚是不解。 : 为什么要call super.__init__(), 在这里的 super class 只是object? : thanks
| i***r 发帖数: 1035 | 7 多谢详解,非常清楚。
这里的super只是base 的 object,call super是不是有点多此一举?
base object应该没有implement信息 | d********g 发帖数: 10550 | 8 不算多此一举,有专门的讨论:
http://stackoverflow.com/questions/8611712/what-does-objects-in
【在 i***r 的大作中提到】 : 多谢详解,非常清楚。 : 这里的super只是base 的 object,call super是不是有点多此一举? : base object应该没有implement信息
| i***r 发帖数: 1035 | |
|