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 历史遗留问题太多。
49.49MB
文件大小:
评论区