导语:
本文主要介绍了关于python中类方法的区别是什么的相关知识,包括python属性与方法,以及python中readlines这些编程知识,希望对大家有参考作用。
类方法和静态方法是 OO 编程中经常使用的两个术语。
从逻辑上讲:类方法只能通过类名调用;静态方法可以通过类名或对象名调用。
在C++中,静态方法和类方法在逻辑上是等价的,而且只有一个概念,不会混淆。
在 Python 中,方法分为三类:实例方法、类方法和静态方法。代码显示如下:
class Test(object):
def InstanceFun(self):
print("InstanceFun");
print(self);
@classmethod
def ClassFun(cls):
print("ClassFun");
print(cls);
@staticmethod
def StaticFun():
print("StaticFun");
t = Test();
t.InstanceFun(); # 输出InstanceFun,打印对象内存地址“<__main__.Test object at 0x0293DCF0>”
Test.ClassFun(); # 输出ClassFun,打印类位置 <class '__main__.Test'>
Test.StaticFun(); # 输出StaticFun
t.StaticFun(); # 输出StaticFun
t.ClassFun(); # 输出ClassFun,打印类位置 <class '__main__.Test'>
Test.InstanceFun(); # 错误,TypeError: unbound method instanceFun() must be called with Test
instance as first argument
Test.InstanceFun(t); # 输出InstanceFun,打印对象内存地址“<__main__.Test object at 0x0293DCF0>”
t.ClassFun(Test); # 错误 classFun() takes exactly 1 argument (2 given)
可以看到,在PYTHON中,两种方法的主要区别在于参数。实例方法隐含的参数为类实例self,而类方法隐含的参数为类本身cls。
静态方法无隐含参数,主要为了类实例也可以直接调用静态方法。
所以逻辑上类方法应当只被类调用,实例方法实例调用,静态方法两者都能调用。主要区别在于参数传递上的区别,实例方法悄悄传递的是self引用作为参数,而类方法悄悄传递的是cls引用作为参数。
Python实现了一定的灵活性使得类方法和静态方法,都能够被实例和类二者调用。
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python中Jupyter Notebook的模式有哪些?11/26
- ♥ 方便的 Python 编辑器有哪些?12/06
- ♥ python中的%d是什么08/13
- ♥ python的主流开发工具有哪些?09/30
- ♥ 使用 __slots__ 在 python 中定义类属性11/23
- ♥ python中函数的作用09/12
内容反馈