rse*_*ilk -3 python inheritance super
我如何创建如下的父子继承....
class Synset(object):
def __init__(self, synset_id=None, w_num=None, word=None, ss_type=None, sense_number=None, tag_count=None):
self.synset_id = synset_id
self.w_num = w_num
self.word = word
self.ss_type = ss_type
self.sense_number = sense_number
self.tag_count = tag_count
def __repr__(self):
return repr((self.word))
class NounSynset(Synset):
def __init__(self, synset_id=None, w_num=None, word=None, ss_type=None, sense_number=None, tag_count=None):
super(NounSynset, self).__init__(synset_id=None, w_num=None, word=None, ss_type=None, sense_number=None, tag_count=None)
pass
ns = NounSynset(None, None, "Word")
print ns
Run Code Online (Sandbox Code Playgroud)
我会猜测你在问什么.
你想知道为什么最后一行打印出来None而不是"Word".
首先,做repr(ns)什么?松散:它调用NounSynset.__repr__(ns),这只是Synset.__repr__(ns)(因为你没有在子类中覆盖它),它只是返回repr((self.word)).额外的括号没有做任何事情,只是让你的代码更难阅读,所以返回repr(self.word).
现在,self.word保证是None.为什么?看看你的构造函数是如何工作的(忽略它pass,除了使代码的可读性稍差之外,它再添加一些东西):
class NounSynset(Synset):
def __init__(self, synset_id=None, w_num=None, word=None, ss_type=None, sense_number=None, tag_count=None):
super(NounSynset, self).__init__(synset_id=None, w_num=None, word=None, ss_type=None, sense_number=None, tag_count=None)
Run Code Online (Sandbox Code Playgroud)
word=None无论你得到什么,你都明确地作为关键字参数传递.
如果你想转发所有的参数,或传递特定的硬编码值,或者两者的某种组合,或者生成随机值,或者其他什么,你可以做任何这些,但你必须实际写它,只是像任何其他函数调用.例如,也许你想要这个:
def __init__(self, synset_id=None, w_num=None, word=None, ss_type=None, sense_number=None, tag_count=None):
super(NounSynset, self).__init__(synset_id=synset_id, w_num=w_num, word=word, ss_type=ss_type, sense_number=sense_number, tag_count=tag_count)
Run Code Online (Sandbox Code Playgroud)
… 或这个 …
def __init__(self, synset_id=None, w_num=None, word=None, ss_type=None, sense_number=None, tag_count=None):
super(NounSynset, self).__init__(synset_id=synset_id, w_num=w_num, word=word, ss_type=ss_type if ss_type else NOUN_TYPE, sense_number=sense_number, tag_count=tag_count)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |