草庐IT

subClass

全部标签

python - 子类化 dict : should dict. __init__() 被调用?

这是一个双重问题,一个理论部分,一个实践部分:当子类化dict时:classImageDB(dict):def__init__(self,directory):dict.__init__(self)#Necessary??...是否应该调用dict.__init__(self),作为“安全”措施(例如,如果有一些重要的实现细节很重要)?如果not调用dict.__init__()是否存在代码与Python的future版本中断的风险?我在这里寻找做一件事或另一件事的根本原因(实际上,调用dict.__init__()是安全的)。我的猜测是,当调用ImageDB.__init__(sel

python - 如何在没有类型问题的情况下对 Python 列表进行子类化?

我想在Python中实现一个自定义列表类作为list的子类。为了获得所有列表操作的完全类型兼容性,我需要从基本list类重写的最小方法集是什么?Thisquestion建议至少需要覆盖__getslice__。根据进一步的研究,还需要__add__和__mul__。所以我有这个代码:classCustomList(list):def__getslice__(self,i,j):returnCustomList(list.__getslice__(self,i,j))def__add__(self,other):returnCustomList(list.__add__(self,oth

python - 如何在没有类型问题的情况下对 Python 列表进行子类化?

我想在Python中实现一个自定义列表类作为list的子类。为了获得所有列表操作的完全类型兼容性,我需要从基本list类重写的最小方法集是什么?Thisquestion建议至少需要覆盖__getslice__。根据进一步的研究,还需要__add__和__mul__。所以我有这个代码:classCustomList(list):def__getslice__(self,i,j):returnCustomList(list.__getslice__(self,i,j))def__add__(self,other):returnCustomList(list.__add__(self,oth

python - 了解 __init_subclass__

我终于升级了我的python版本,并且发现了添加的新功能。除其他外,我对新的__init_subclass__摸不着头脑。方法。来自文档:Thismethodiscalledwheneverthecontainingclassissubclassed.clsisthenthenewsubclass.Ifdefinedasanormalinstancemethod,thismethodisimplicitlyconvertedtoaclassmethod.所以我开始尝试使用它,按照文档中的示例进行操作:classPhilosopher:def__init_subclass__(cls,d

python - 了解 __init_subclass__

我终于升级了我的python版本,并且发现了添加的新功能。除其他外,我对新的__init_subclass__摸不着头脑。方法。来自文档:Thismethodiscalledwheneverthecontainingclassissubclassed.clsisthenthenewsubclass.Ifdefinedasanormalinstancemethod,thismethodisimplicitlyconvertedtoaclassmethod.所以我开始尝试使用它,按照文档中的示例进行操作:classPhilosopher:def__init_subclass__(cls,d

python - 使用多个 __init__ 参数子类化元组

以下代码有效:classFoo(tuple):def__init__(self,b):super(Foo,self).__init__(tuple(b))if__name__=='__main__':printFoo([3,4])$pythonplay.py结果:play.py:4:DeprecationWarning:object.__init__()takesnoparameterssuper(Foo,self).__init__(tuple(b))(3,4)但不是以下:classFoo(tuple):def__init__(self,a,b):super(Foo,self).__

python - 使用多个 __init__ 参数子类化元组

以下代码有效:classFoo(tuple):def__init__(self,b):super(Foo,self).__init__(tuple(b))if__name__=='__main__':printFoo([3,4])$pythonplay.py结果:play.py:4:DeprecationWarning:object.__init__()takesnoparameterssuper(Foo,self).__init__(tuple(b))(3,4)但不是以下:classFoo(tuple):def__init__(self,a,b):super(Foo,self).__

subclass - 在 Python 中重新分类实例

我有一个由外部库提供给我的类。我创建了这个类的一个子类。我也有一个原始类的实例。我现在想将此实例转换为我的子类的一个实例,而不更改该实例已有的任何属性(我的子类将覆盖的属性除外)。以下解决方案似乎有效。#Thisclasscomesfromanexternallibrary.Idon't(want)tocontrol#it,andIwanttobeopentochangesthatgetmadetotheclass#bythelibraryprovider.classProgrammer(object):def__init__(self,name):self._name=namedef

subclass - 在 Python 中重新分类实例

我有一个由外部库提供给我的类。我创建了这个类的一个子类。我也有一个原始类的实例。我现在想将此实例转换为我的子类的一个实例,而不更改该实例已有的任何属性(我的子类将覆盖的属性除外)。以下解决方案似乎有效。#Thisclasscomesfromanexternallibrary.Idon't(want)tocontrol#it,andIwanttobeopentochangesthatgetmadetotheclass#bythelibraryprovider.classProgrammer(object):def__init__(self,name):self._name=namedef

python - 子类中 __slots__ 的继承实际上是如何工作的?

在Pythondatamodelreferencesectiononslots有一个关于使用__slots__的注意事项列表。我对第1项和第6项感到非常困惑,因为它们似乎相互矛盾。第一项:当从一个类继承时没有__slots__,__dict__属性该类的将永远是可访问,所以__slots__子类中的定义是毫无意义。第六条:__slots__的Action声明仅限于类它在哪里定义。因此,子类将有一个__dict__除非他们也定义了__slots__(其中必须只包含任何名称额外的插槽)。在我看来,这些项目可以更好地措辞或通过代码显示,但我一直在努力解决这个问题,但仍然感到困惑。我确实了解_