繁体   English   中英

如何从继承类的方法扩展列表

[英]How to extend a list from a method of inherited class

我有两个类:BaseClass 和 Antifraud,它是从 BaseClass 派生的。 BaseClass 中有一个方法有一个列表,如下所示:

class BaseClass:
    def __init__(self):
        pass

    def create_metrics(self):
        self.metrics_list = ['score',
                             'precision',
                             'recall']

我希望当我实例化 Antifraud 类时,列表self.metrics_list将与之前相同,加上'f1' 我尝试了以下方法:

class Antifraud(BaseClass):

    def __init__(self):
        super().__init__()

        self.metrics_list.extend(['f1'])

a = Antifraud()

但我收到错误:

AttributeError: 'Antifraud' object has no attribute 'metrics_list'

我该如何解决我的问题? 甚至有可能实现吗? 谢谢

你可以调用create_metrics方法之前延长self.metrics_list ,通过调用第一create_metrics要创建self.metrics_list

class Antifraud(BaseClass):

    def __init__(self):
        super().__init__()
        self.create_metrics()
        self.metrics_list.extend(['f1'])
print(Antifraud().metrics_list)

输出:

['score', 'precision', 'recall', 'f1']

__init__之外不初始化实例的属性可以被认为是一种不好的做法

您可以将BaseClass更新为

    class BaseClass:
        def __init__(self):
            self.metrics_list = ['score', 'precision', 'recall']

然后您的AntiFraud课程将起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM