Python静态方法调用兼容性分析

静态方法的调用方式,在 Python 2.6 和 3.0 里还真有点讲究。类的类方法像printNumInstances,你要是直接用实例去调,在两个版本都会跪——因为它们压根没参数接那个自动传进来的self。嗯,所以只能靠类来调。问题是,Python 2.6 里还不让你这么干,直接报错。要是你用的是 Python 3.0,那就省心多了,直接类名.方法名,稳!

所以啊,如果你写的函数其实就不打算接self,干脆标成@staticmethod,一劳永逸。还能同时兼容实例和类的调用。要不然每次一不小心就掉坑里,调试都能给你调疯了。挺麻烦的。

如果你非得在 Python 2.6 里还想用类去调这种“非self方法”,那得绕点路,比如用特殊设计或者干脆封装成工具函数。想了解怎么搞,可以参考下面几篇文章,像静态和非静态方法的调用》和《Python 调用 C++类的方法》都挺有参考价值的。

如果你已经在用 Python 3,那就放开手脚写,记住尽量通过类去调用静态方法;如果你还得兼顾旧版,那就老老实实加个装饰器或者绕个弯吧。别问,问就是 Python 历史遗留问题太多。

pdf 文件大小:49.49MB