草庐IT

Inheritance

全部标签

python - 在 `super()` 内使用 `__init_subclass__` 找不到父类的类方法

这个问题在这里已经有了答案:Whydoesaclassmethod'ssuperneedasecondargument?(1个回答)3年前关闭。我尝试从__init_subclass__中访问父级的类方法但是这似乎不起作用。假设以下示例代码:classFoo:def__init_subclass__(cls):print('init',cls,cls.__mro__)super(cls).foo()@classmethoddeffoo(cls):print('foo')classBar(Foo):pass产生以下异常:AttributeError:'super'objecthasnoa

python - 如何装饰子类中的继承方法?

我不太确定如何在继承的方法上使用装饰器。通常装饰器放在定义之前,但对于继承的函数,定义在父类而不是子类中给出。我想避免重写子类中方法的定义,并简单地指定将装饰器放在继承的方法周围。为了让自己更清楚,这是我的意思的一个工作示例:classPerson():def__init__(self,age):self.age=age@classmethoddefgets_drink(cls,):print"it'stimetogetadrink!"return"Abeer"defdec(some_f):deflegal_issue(obj,):some_f(obj)return'ACoke'ret

python - 对象声明在 python 类中意味着什么,我应该使用它吗?

这个问题在这里已经有了答案:WhydoPythonclassesinheritobject?(6个答案)关闭6年前。示例#1:classPerson(object):pass示例#2:classPerson:pass对象声明有什么作用?你应该使用它吗?我有一堆程序,它们都有,但不知道它们有什么不同。如果有人可以解释这个概念,请。

python - 您将如何继承并覆盖 Django 模型类以创建 listOfStringsField?

我想为Django模型创建一个新类型的字段,它基本上是一个ListOfStrings。因此,在您的模型代码中,您将具有以下内容:模型.py:fromdjango.dbimportmodelsclassListOfStringsField(???):???classmyDjangoModelClass():myName=models.CharField(max_length=64)myFriends=ListOfStringsField()#其他.py:myclass=myDjangoModelClass()myclass.myName="bob"myclass.myFriends=["

python - 如何检查 Python 的类层次结构?

假设我有一个类X,我如何检查哪个是基类,以及它们的基类等?我将Eclipse与PyDev结合使用,例如对于Java,您可以在类名上键入CTRL+T并查看层次结构,例如:java.lang.Objectjava.lang.Numberjava.lang.IntegerPython有可能吗?如果在EclipsePyDev中不可能,我在哪里可以找到此信息? 最佳答案 在突出显示类名的情况下按f4以打开层次结构View。 关于python-如何检查Python的类层次结构?,我们在StackOv

Python 的 super() 函数

在下面的示例中,B.Go()方法的最后两行都调用了classA中的Go()方法>。它们在功能上是否相同?使用super()的唯一好处是我不必知道继承的类名吗?classA(object):defGo(self):print"CallingA.Go()"classB(A):defGo(self):super(B,self).Go()A.Go(self)inst=B()inst.Go() 最佳答案 不,super()做一些直接调用A.Go不能的事情。super(B,self).Go()调用方法解析顺序中的下一个方法。如果B根本没有实现该

python - Sphinx autodoc show-inheritance : How to skip undocumented, 中间基础?

我有一个像这样的三层类结构:classSuper(object):"""Thisclassisdocumented."""classIntermediate(Super):passclassSub(Intermediate):"""Thisisalsodocumented."""我的index.rst文件如下所示:..automodule::mymodule:show-inheritance::inherited-members:Sphinx为我生成了一份不错的API文档。它包括类Super和Sub,并带有适当的注释。它不包括Intermediate,因为它没有注释而且我没有提供und

python - 何时使用关联、聚合、组合和继承?

我在Stackoverflow上看过很多解释关系之间差异的帖子:关联、聚合、组合和继承,并附有示例。但是,我更具体地对每种方法的优缺点以及一种方法何时对手头的任务最有效感到困惑。这是我一直无法真正找到好的答案。与论坛的指南保持一致,例如,我不是询问为什么人们可能个人更喜欢使用继承而不是组合。我对每种方法的任何客观优势/劣势特别感兴趣,尽管听起来很强大。IE。一种方法创建的代码是否比另一种方法更具可读性,或者它是否具有更好的运行时效率等。理想情况下,如果有人能给我一些现实世界的例子,说明这些方法可能成功或失败,以及原因,那将非常有助于发展我的知识,我希望,还有其他人的知识。为了确保工作有

python - 在 Django 中获取继承的模型对象

我有一个具有以下模型的Django应用程序:对象A是一个简单的对象,它从具有几个字段的模型扩展而来,比方说,一个特定的对象是一个名为"NAME"的字符字段和一个整数字段称为“ORDER”。A是抽象的,意味着数据库中没有A对象,而是...对象B和C是A的特化,这意味着它们继承自A并添加了一些其他的领域。现在假设我需要字段NAME以字母"Z"开头的所有对象,按ORDER字段排序,但我这些对象也需要所有B和C特定字段。现在我看到两种方法:a)单独查询B和C对象并获取两个列表,合并它们,手动排序并使用它。b)查询A对象,名称以"Z"开头,按"ORDER"排序,结果查询B和C反对把所有剩余的数据

python - 惯用地将 BaseClass 对象转换为 SubClass 对象?

有一个基类Base和一个子类Special。classBase(object):def__init__(self,name):self.name=namedefgreet(self):return'Hello%s'%self.nameclassSpecial(Base):def__init__(self,name):super(Special,self).__init__(name)defrhyme(self):return'Hi%s!Howareyou?Fine,thanks.Whataboutyou?'%self.name如何将Base实例转换为Special实例?目前,我在Spe