相关疑难解决方法(0)

如何为类定义__str__方法?

在Python中,object该类充当所有(新式)类的根超类.至少默认情况下,应用strrepr任何子类的"类实例" object会产生相同的结果:

>>> class spam(object): pass
... 
>>> str(spam)
"<class '__main__.spam'>"
>>> str(spam) == repr(spam)
Run Code Online (Sandbox Code Playgroud)

我想定义的一个子类object,比方说fancyobject,也就是等同于object以各种方式,不同之处在于施加strreprfancyobject自身产生不同的输出:

>>> class ham(fancyobject): pass
...
>>> str(ham)
'ham'
>>> repr(ham)
"<class '__main__.ham'>"
Run Code Online (Sandbox Code Playgroud)

有没有办法在Python中执行此操作?

PS:我知道__str__特殊的方法,但我的理解是,如果类A重写__str__,那么只有str在实例上调用时才会调用重写方法A,而不是在调用它A本身时调用.即:

>>> class A(object):
...     def __str__(self):
...         return 'from new __str__: ' + object.__str__(self)
... 
>>> str(A())
'from new …
Run Code Online (Sandbox Code Playgroud)

python

26
推荐指数
2
解决办法
5万
查看次数

如何获得装饰函数的参数规范?

我需要确定装饰器中函数的argspec(inspect.getargspec):

def decor(func):
    @wraps(func)
    def _decor(*args, **kwargs):
        return func(*args, **kwargs)
    return _decor

@decor
def my_func(key=1, value=False):
    pass
Run Code Online (Sandbox Code Playgroud)

我需要能够检查包装的"my_func"并返回键/值参数及其默认值.看来inspect.getargspec没有得到正确的功能.

(对于一些运行时检查/验证以及后来的文档生成,我需要这个)

python

21
推荐指数
2
解决办法
3875
查看次数

标签 统计

python ×2