相关疑难解决方法(0)

如何根据名称查找类的所有子类?

我需要一种工作方法来获取从Python中的基类继承的所有类.

python subclass

194
推荐指数
6
解决办法
8万
查看次数

确定子类是否具有用 Python 实现的基类方法

我有一个扩展基类的类。实例化后,我想检查子类是否具有从其基础实现的类之一,但我不确定最好的方法。 hasattr(self, '[method]')如果孩子没有实现,则返回 super 的方法,所以我试图区分两者。

这是一个例子:

class Base :
   def __init__ ( self,) :
       pass
   
   def fail (self,) :
       pass

# Now create the subclass w/o .fail
class Task ( Base ) :
    def __init__ ( self, ):
         print( hasattr( self, 'fail' ) ) # < returns True
Run Code Online (Sandbox Code Playgroud)

Task()实例化时,它会打印, True因为Task继承.failBase. 但在这种情况下,我想知道Task Does Not Implement .fail,所以我想要False以某种方式返回。看来我正在寻找类似的东西isimplemented( self, 'fail' )。我缺少什么?

python oop inheritance superclass python-3.x

5
推荐指数
1
解决办法
1889
查看次数

有没有一种方法可以在Python中定义子类的方法?

__init__方法定义在创建类的实例时要执行的操作。创建子类时,我可以做一些等效的事情吗?

假设我有抽象类Entity

class Entity:
    def __onsubclasscreation__(cls):
        for var in cls.__annotations__:
            cls.__dict__[var] = property(lambda self:self.vars[var])
Run Code Online (Sandbox Code Playgroud)

这意味着每当我定义一个继承自的新类Entity时,该类的所有带注释的变量都将收到一个吸气剂:

class Train(Entity):
    wagons: int
    color: str

>>> t = Train()
>>> t.vars["wagons"] = 5
>>> t.wagons
5
Run Code Online (Sandbox Code Playgroud)

我无法在实例化上执行此操作,因为属性需要在类中定义,而我无法在超类中执行,因为我不知道需要哪些属性。有什么办法可以动态地创建子类吗?

python methods inheritance subclass

4
推荐指数
1
解决办法
62
查看次数

标签 统计

python ×3

inheritance ×2

subclass ×2

methods ×1

oop ×1

python-3.x ×1

superclass ×1