我是 Python 新手,在对我的对象进行单元测试时,我注意到一些“奇怪”的东西。
class Ape(object):
def __init__(self):
print 'ooook'
def say(self, s):
print s
def main():
Ape().say('eeek')
if __name__ == '__main__':
main()
我写这个小例子是为了说明我感到困惑的地方。如果你执行 Ape().say('eeek') 这实际上会实例化 Ape 对象并运行 init 方法吗?我以为不会,但我有一些奇怪的副作用,所以现在我想它会吗?
如果你想直接调用一个方法而不创建实例,你可以使用staticmethod
装饰师。请注意,没有self
当你使用静态方法时
class Ape(object):
def __init__(self):
print 'ooook'
@staticmethod
def say(s):
print s
def main():
Ape.say('eeek')
if __name__ == '__main__':
main()
与类方法进行比较,其中类是第一个参数而不是实例
class Ape(object):
def __init__(self):
print 'ooook'
@classmethod
def say(cls, s):
print "the class is:", cls
print s
def main():
Ape.say('eeek')
if __name__ == '__main__':
main()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)