小编Mic*_*zny的帖子

Python:如何使用<和>将字符串括在列表中

我想将列表中的字符串括在<>(格式为<%s>).当前代码执行以下操作:

def create_worker (general_logger, general_config):
    arguments = ["worker_name", "worker_module", "worker_class"]
    __check_arguments(arguments)

def __check_arguments(arguments):
    if len(sys.argv) < 2 + len(arguments):
        print "Usage: %s delete-project %s" % (__file__," ".join(arguments))
        sys.exit(10)
Run Code Online (Sandbox Code Playgroud)

当前输出如下所示:

Usage: ...\handler_scripts.py delete-project worker_name worker_module worker_class
Run Code Online (Sandbox Code Playgroud)

并且应该如下所示:

Usage: ...\handler_scripts.py delete-project <worker_name> <worker_module> <worker_class>
Run Code Online (Sandbox Code Playgroud)

有没有简短的方法来做到这一点?

问候,迈克尔

python string

2
推荐指数
1
解决办法
862
查看次数

python:子类一个元类

为了将各种类的方法放入全局注册表,我正在使用带有元类的装饰器.装饰器标签,元类将函数放在注册表中:

class ExposedMethod (object):
    def __init__(self, decoratedFunction):
        self._decoratedFunction = decoratedFunction

    def __call__(__self,*__args,**__kw):
        return __self._decoratedFunction(*__args,**__kw)

class ExposedMethodDecoratorMetaclass(type):
    def __new__(mcs, name, bases, dct):
        for obj_name, obj in dct.iteritems():
            if isinstance(obj, ExposedMethod):
                WorkerFunctionRegistry.addWorkerToWorkerFunction(obj_name, name)
        return type.__new__(mcs, name, bases, dct)

class MyClass (object):
    __metaclass__ = DiscoveryExposedMethodDecoratorMetaclass

    @ExposeDiscoveryMethod
    def myCoolExposedMethod (self):
        pass
Run Code Online (Sandbox Code Playgroud)

我现在已经到了需要两个功能注册表的地步.第一个想法是将元类子类化并将其他注册表放入其中.为此,方法只需要重写.

由于重写意味着冗余代码,这不是我真正想要的.因此,如果有人能够指定如何将属性放入元类中的方法,那么在执行new时可以读取该元素会很好.有了这个,可以放入正确的注册表,而无需重写新的.

python metaclass

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

标签 统计

python ×2

metaclass ×1

string ×1