我正在用 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 和个人代码。它要么已设置为 "",要么设置为您调用带参数的 USPatent(...) 时传入的任何内容。您只需调用 Patent.__init__() 方法传递您拥有的所有值。
您也可以从调用中删除关键字参数语法:
Patent.__init__(self, CC, PN, KC)
