草庐IT

python - 如何检测python子类中的方法重载?

我有一个类是许多其他类的父类(superclass)。我想知道(在我的父类(superclass)的__init__()中)子类是否覆盖了特定方法。我试图用一个类方法来完成这个,但是结果是错误的:classSuper:def__init__(self):ifself.method==Super.method:print'same'else:print'different'@classmethoddefmethod(cls):passclassSub1(Super):defmethod(self):print'hi'classSub2(Super):passSuper()#shouldb

对于没有覆盖的子类,python 的 a==b 调用 b.__eq__(a)

这个问题在这里已经有了答案:Howis__eq__handledinPythonandinwhatorder?(3个回答)关闭7年前。在python2.7.6中,假设我有一个定义__eq__的类和一个子类其中:>>>classA(object):...def__eq__(self,other):...printself.__class__,other.__class__...returnTrue...>>>classB(A):...pass...现在我为每个类创建一个对象,并想比较它们:>>>a=A()>>>b=B()>>>a==b我得到的结果:这表明解释器正在调用b.__eq__(a

对于没有覆盖的子类,python 的 a==b 调用 b.__eq__(a)

这个问题在这里已经有了答案:Howis__eq__handledinPythonandinwhatorder?(3个回答)关闭7年前。在python2.7.6中,假设我有一个定义__eq__的类和一个子类其中:>>>classA(object):...def__eq__(self,other):...printself.__class__,other.__class__...returnTrue...>>>classB(A):...pass...现在我为每个类创建一个对象,并想比较它们:>>>a=A()>>>b=B()>>>a==b我得到的结果:这表明解释器正在调用b.__eq__(a

python - 避免在子类中指定所有参数

我有一个类:classA(object):def__init__(self,a,b,c,d,e,f,g,...........,x,y,z)#dosomeinitstuff我有一个子类,它需要一个额外的arg(最后一个W)classB(A):def__init__(self.a,b,c,d,e,f,g,...........,x,y,z,W)A.__init__(self,a,b,c,d,e,f,g,...........,x,y,z)self.__W=W编写所有这些样板代码似乎很愚蠢,例如将所有参数从B的Ctor传递到对A的ctor的内部调用,因为那么对A的ctor的每次更改都必须应

python - 避免在子类中指定所有参数

我有一个类:classA(object):def__init__(self,a,b,c,d,e,f,g,...........,x,y,z)#dosomeinitstuff我有一个子类,它需要一个额外的arg(最后一个W)classB(A):def__init__(self.a,b,c,d,e,f,g,...........,x,y,z,W)A.__init__(self,a,b,c,d,e,f,g,...........,x,y,z)self.__W=W编写所有这些样板代码似乎很愚蠢,例如将所有参数从B的Ctor传递到对A的ctor的内部调用,因为那么对A的ctor的每次更改都必须应

python - pickle numpy数组的子类时保留自定义属性

我在thenumpydocumentation之后创建了一个numpyndarray的子类.特别是,我有addedacustomattribute通过修改提供的代码。我正在使用Pythonmultiprocessing在并行循环中操作此类的实例。据我了解,范围本质上“复制”到多个线程的方式是使用pickle。我现在遇到的问题与numpy数组的pickle方式有关。我找不到任何关于此的综合文档,但有一些discussionsbetweenthedilldevelopers建议我应该关注__reduce__方法,该方法在pickle时被调用。任何人都可以对此有所了解吗?最小的工作示例实际上

python - pickle numpy数组的子类时保留自定义属性

我在thenumpydocumentation之后创建了一个numpyndarray的子类.特别是,我有addedacustomattribute通过修改提供的代码。我正在使用Pythonmultiprocessing在并行循环中操作此类的实例。据我了解,范围本质上“复制”到多个线程的方式是使用pickle。我现在遇到的问题与numpy数组的pickle方式有关。我找不到任何关于此的综合文档,但有一些discussionsbetweenthedilldevelopers建议我应该关注__reduce__方法,该方法在pickle时被调用。任何人都可以对此有所了解吗?最小的工作示例实际上

python - 强制子类在重写时调用父方法

我很好奇Python中是否有一种方法(从Parent类中)强制要在子类被重写时从子类中调用父方法。例子:classParent(object):def__init__(self):self.someValue=1defstart(self):'''Forcemethodtobecalled'''self.someValue+=1我希望我的childChild类做的正确实现是:classChildCorrect(Parent):defstart(self):Parent.start(self)self.someValue+=1但是,有一种方法可以迫使开发子类的开发人员专门调用(而不是覆盖

python - 强制子类在重写时调用父方法

我很好奇Python中是否有一种方法(从Parent类中)强制要在子类被重写时从子类中调用父方法。例子:classParent(object):def__init__(self):self.someValue=1defstart(self):'''Forcemethodtobecalled'''self.someValue+=1我希望我的childChild类做的正确实现是:classChildCorrect(Parent):defstart(self):Parent.start(self)self.someValue+=1但是,有一种方法可以迫使开发子类的开发人员专门调用(而不是覆盖

python - 获取子类名称?

是否可以获取子类的名称?例如:classFoo:defbar(self):printtype(self)classSubFoo(Foo):passSubFoo().bar()将打印:我正在寻找获取"SubFoo"的方法.我知道你可以做到isinstance,但我不知道先验类的名称,所以这对我不起作用。 最佳答案 你可以使用SubFoo().__class__.__name__这可能是题外话,因为它给你一个类名:) 关于python-获取子类名称?,我们在StackOverflow上找到一