Skip to main content
 首页 » 编程设计

python之理解 python 中的继承

2025年05月04日14linjiqin

我正在用 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)