在Python中,object该类充当所有(新式)类的根超类.至少默认情况下,应用str和repr任何子类的"类实例" object会产生相同的结果:
>>> class spam(object): pass
...
>>> str(spam)
"<class '__main__.spam'>"
>>> str(spam) == repr(spam)
Run Code Online (Sandbox Code Playgroud)
我想定义的一个子类object,比方说fancyobject,也就是等同于object以各种方式,不同之处在于施加str和repr对fancyobject自身产生不同的输出:
>>> 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) 我需要确定装饰器中函数的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 ×2