Есть много вещей, которые могут быть не правы с этим.давайте начнем с вершины.Похоже, вы действительно просто используете ECollector
в качестве пространства имен для группировки некоторых функций.Это нормально, но вы хотите сделать вызов ECollector.some_method
, вам нужно немного изменить ситуацию, превратив эти методы в методы класса:
class ECollector:
"""error msg collector
this class should be used as 'global'"""
msgs = []
@classmethod
def addmsg(cls,msg):
cls.msgs.append(msg)
@classmethod
def clear(cls):
cls.msgs = []
Это означает, что в любое время вы вызываете addmsg
или clear
, они получают неявный первый аргумент самого класса.В этом конкретном способе, которым я его преобразовал, каждый подкласс получит свой msgs
.Если вы хотите, чтобы все подклассы имели общий атрибут msgs
, вы можете изменить cls
на ECollector
Кроме того, вы захотите немного изменить свой подкласс, потому что выподклассы от ECollector
, но затем вызывают его методы напрямую.Вы можете сделать это вместо:
class test(ECollector):
dcodes = []
def new(self):
self.addmsg("test!")