我在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?
答案 0 :(得分:4)
你传入一个空字符串:
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)
答案 1 :(得分:1)
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
而不是""
KC=""
作为KC=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)
答案 2 :(得分:1)
该行
Patent.__init__(self, CC, PN, KC="")
应该是
Patent.__init__(self, CC, PN, KC)
前者用名称" KC"设置参数。使用关键字样式参数语法将值""
(空字符串)。你想要的是传递变量KC
的值。