我在python中有一个函数,它返回一个类而不是一个实例。如何指示返回的值是特定类型的子类?
在下面的示例中,我将返回值设置为type,但我还想表明该类型具有BaseClass的所有属性:
from typing import Dict, Any
def class_constructor(name: str, attrs: Dict[str, Any]) -> type
ConstructedClass = type(name, (BaseClass,), attrs)
return ConstructedClass
class BaseClass: ...
我不能说(...) - > BaseClass,因为它表示BaseClass的实例而不是BaseClass本身。
要回答我自己的问题,这显示为python/typing issue #107。目前,最好的解决方案是:
from typing import Dict, Any
class BaseClass: ...
def class_constructor(name: str, attrs: Dict[str, Any]) -> Callable[Any, BaseClass]
ConstructedClass = type(name, (BaseClass,), attrs)
return ConstructedClass
如果您知道自己的__init__
签名,则可以在Any
中使用该签名代替Callable[Any, ...]
。
当添加对Type[T]
的支持时,解决方案将是:
from typing import Dict, Any
class BaseClass: ...
def class_constructor(name: str, attrs: Dict[str, Any]) -> Type[BaseClass]
ConstructedClass = type(name, (BaseClass,), attrs)
return ConstructedClass
答案 0 :(得分:0)
我认为你需要创建一个新类,$( "#job_option_2" ).replaceWith('<div class="five wide column"> <%= select_tag "job2", options_for_select(@employee_jobs), id:"job_option_2",prompt:"Select Job", class:"fluid ui dropdown"%></div>')
$( "#job_option_3" ).replaceWith('<div class="five wide column"> <%= select_tag "job3", options_for_select(@employee_jobs), id:"job_option_3",prompt:"Select Job", class:"fluid ui dropdown"%></div>')
仅用它来标记它和任何后代类。
BaseClass