理解python

时间:2016-10-17 07:34:12

标签: python inheritance

我在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?

3 个答案:

答案 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只是另一个变量,就像selfCCPN一样。它已设置为"",或者当您使用参数调用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的值。