python中使类方法像属性一样被使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中使类方法像属性一样被使用相关的知识,希望对你有一定的参考价值。

参考技术A getter和setter方法装饰器使得我们可以像使用属性一样调用方法。
1、get方法装饰器:@property
2、set方法装饰器:@属性名.setter

Python系列反射

一、静态方法(staticmethod)和类方法(classmethod)

类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属性交互(也就是可以使用类属性)

静态方法:让类里的方法直接被类调用,就像正常调用函数一样

类方法和静态方法的相同点:都可以直接被类调用,不需要实例化

类方法和静态方法的不同点:

  类方法必须有一个cls参数表示这个类,可以使用类属性

  静态方法不需要参数

绑定方法:分为普通方法和类方法

     普通方法:默认有一个self对象传进来,并且只能被对象调用-------绑定到对象

      类方法:默认有一个cls对象传进来,并且可以被类和对象(不推荐)调用-----绑定到类

非绑定方法:静态方法:没有设置默认参数,并且可以被类和对象(不推荐)调用-----非绑定

class Foo:
    pass
class Son(Foo):
    pass
s = Son()
print(isinstance(s,Son))  #判断s是不是Son的对象
print(type(s) is Son)
print(isinstance(s,Foo))  #判断s是不是Foo的对象  不精准
print(type(s) is Foo)  #type比较精准

print(issubclass(Son,Foo)) #判断Son是不是Foo的子类
print(issubclass(Son,object))
print(issubclass(Foo,object))
print(issubclass(int,object))

 

以上是关于python中使类方法像属性一样被使用的主要内容,如果未能解决你的问题,请参考以下文章

如何在Python中使类成员进程安全

如何在 .net 中使类可序列化而无需 Serializable 属性

如何在Asp .Net Web API中的请求的整个生命周期中使类对象可用?

我是否需要在Singleton类中使每个方法同步?

Python系列反射

Python系列之 - 反射