我正在用python学习OOP。
我正在努力为什么这不能按我预期的那样工作?
class Patent(object):
"""An object to hold patent information in Specific format"""
def __init__(self, CC, PN, KC=""):
self.cc = CC
self.pn = PN
self.kc = KC
class USPatent(Patent):
""""Class for holding information of uspto patents in Specific format"""
def __init__(self, CC, PN, KC=""):
Patent.__init__(self, CC, PN, KC="")
pt1 = Patent("US", "20160243185", "A1")
pt2 = USPatent("US", "20160243185", "A1")
pt1.kc
Out[168]: 'A1'
pt2.kc
Out[169]: ''
我犯了什么明显的错误,使我无法在USPatent实例中获得kc?
最佳答案
您正在传递一个空字符串:
Patent.__init__(self, CC, PN, KC="")
总是调用
Patent.__init__()
方法将KC
设置为""
。传递您收到的任何
KC
值:class USPatent(Patent):
""""Class for holding information of uspto patents in Specific format"""
def __init__(self, CC, PN, KC=""):
Patent.__init__(self, CC, PN, KC=KC)
在
USPatent.__init__()
中,KC
只是另一个变量,就像self
,CC
和PN
。它要么已设置为""
,要么设置为使用参数调用USPatent(...)
时传递的任何内容。您只想调用Patent.__init__()
方法,并传递您拥有的所有值。您也可以从调用中删除关键字参数语法:
Patent.__init__(self, CC, PN, KC)
关于python - 了解python中的继承,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40080783/