Python继承:修改对象的父类 - python

我需要/想要修改父类,并且在正确导入时遇到问题。子对象仍然使用该类的“旧”版本。

文件A(某些我不想直接修改的lib):

class A(object):
    def __init__(self):
        self.contentA = "42"
        print("A.__init__() ausgeführt")
    def m(self):
        print("A.m() aufgerufen")
class B(A):
    def __init__(self):
        #A.__init__(self)
        super().__init__()
        self.contentB = "43"
        print("B.__init__() ausgeführt")
    def m(self):
        #A.m(self)
        super().m()
        print("B.m() aufgerufen")

档案B:

import somelib as demo

class A(demo.A):
    def __init__(self):
        super().__init__()
    def f(self):
        '''
        new function for A!
        '''
        print("A.f():", self.contentA)

if __name__ == "__main__":
    b = demo.B()
    b.m()
    print("b.contentB: " + str(b.contentB))
    print("b.contentA: " + str(b.contentA))
    b.f() # not found!

找不到新添加的函数f()。我该如何正确执行此操作?

python大神给出的解决方案

仅仅因为您的类也称为A,这并不意味着它将覆盖另一个模块中先前定义的类A。即使可以,类B也不会自动依赖它。

通过在此模块中编写继承的类B可能会更好地解决您的问题,但是,如果您确实要修改父类,则可以:

import somelib as demo

def f(self):
    '''
    new function for A!
    '''
    print("A.f():", self.contentA)

demo.A.f = f  # assign f to the f attribute of A

if __name__ == "__main__":
    b = demo.B()
    b.m()
    print("b.contentB: " + str(b.contentB))
    print("b.contentA: " + str(b.contentA))
    b.f() # found!

Python sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…

用大写字母拆分字符串,但忽略AAA Python Regex - python

我的正则表达式:vendor = "MyNameIsJoe. I'mWorkerInAAAinc." ven = re.split(r'(?<=[a-z])[A-Z]|[A-Z](?=[a-z])', vendor) 以大写字母分割字符串,例如:'我的名字是乔。 I'mWorkerInAAAinc”变成…

查找字符串中的行数 - python

我正在创建一个python电影播放器​​/制作器,我想在多行字符串中找到行数。我想知道是否有任何内置函数或可以编写代码的函数来做到这一点:x = """ line1 line2 """ getLines(x) python大神给出的解决方案 如果换行符是'\n',则nlines …

字符串文字中的正斜杠表现异常 - python

为什么S1和S2在撇号位置方面表现不同?S1="1/282/03/10" S2="4/107/03/10" R1="".join({"N\'" ,S1,"\'" }) R2="".join({"N\'…

Pycharm失去了视图和模板之间的连接 - python

有一天,我发现一个Django应用程序失去了视图和模板之间的连接。我检查了整个项目,此问题仅得到一个应用程序。函数和模板之间的视图没有连接。模板中没有突出显示代码,模板中没有代码完成,并且模板无法识别标签,例如:{% url%}, <script src="{% static '...'%}"> </…