理解python中的继承

2024-05-23 15:03:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习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?你知道吗


Tags: inselfformatinformationobjectinita1class
3条回答
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)

您正在传入一个空字符串:

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)

线路

Patent.__init__(self, CC, PN, KC="")

应该是

Patent.__init__(self, CC, PN, KC)

前者使用关键字样式参数语法将名为“KC”的参数设置为值""(空字符串)。您想要的是传递变量KC的值。你知道吗

相关问题 更多 >