如何扩展Python类init [英] How to extend Python class init
本文介绍了如何扩展Python类init的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经创建了一个基类:
class Thing():
def __init __(self,name) :
self.name = name
我想扩展类并添加到 init 方法,所以 SubThing
有 name
和 time
属性。
class SubThing(Thing):
不能使用旧式类:
#这里为了扩展init并添加一个time属性
def __repr __(self):
return'<%s%s>'%(self.name,self.time)
$ c解决方案p>你可以在子类中定义
__ init __
并调用super
来调用父类的__init __
方法:class SubThing(Thing):
def __init __ * args,** kwargs):
super(SubThing,self).__ init __(* args,** kwargs)
self.time = datetime.now()
请确保你的基类从
object
c> superclass Thing
...
I have created a base class:
class Thing(): def __init__(self, name): self.name = name
I want to extend the class and add to the init method so the that
SubThing
has both aname
and atime
property. How do I do it?class SubThing(Thing): # something here to extend the init and add a "time" property def __repr__(self): return '<%s %s>' % (self.name, self.time)
Any help would be awesome.
解决方案You can just define
__init__
in the subclass and callsuper
to call the parents'__init__
methods appropriately:class SubThing(Thing): def __init__(self, *args, **kwargs): super(SubThing, self).__init__(*args, **kwargs) self.time = datetime.now()
Make sure to have your base class subclass from
object
though, assuper
won't work with old-style classes:class Thing(object): ...
这篇关于如何扩展Python类init的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文