我正在实现一个从适当的子类返回对象的函数。如果我SubClass从迁出base.py,则不会出现的子类__subclasses__。是否要求它们在同一文件中?也许我从未直接导入的事实subclass.py隐藏了python的子类?我能做什么?我什至检查了属性__mro__并get_subclass指向正确的类。
# project/main.py
from project.src.base import get_subclass
obj = get_subclass(cls,name) # Returns an object of a subclass of cls
# project/src/subclass.py
from project.src.base import BaseClass
class SubClass(BaseClass):
pass
# project/src/base.py
def get_subclass(cls,name):
subclss = cls.__subclasses__ # This is returning an empty list
pass
class BaseClass(object):
pass
Run Code Online (Sandbox Code Playgroud) 如果参数是一个序列(列表,元组)或跳过循环但只执行一次操作,那么避免代码重复循环的方法是什么?
def foo(arg1,sequence=None):
# If possible, loop, else do it once
if isinstance(sequence,(list,tuple)):
for value in sequence:
do_something(arg1)
else:
do_something(arg1)
Run Code Online (Sandbox Code Playgroud)
我在for循环中所做的操作比这更长,我想知道你通常使用什么方法来避免这种情况,如果你避免它的话.我经常遇到这个问题而且我没有提出要解决它的问题.
编辑:问题不是在Python中的重复,我如何确定对象是否可迭代?,如建议的那样.我不想引入不同的条件.我想避免重复.