2020-12-03 05:52:21 登录注册 RSS

当前位置: 公理网 >> 网友举报 >> Python的实例方法,类方法,静态方法之间的区别及调用关系

Python的实例方法,类方法,静态方法之间的区别及调用关系
发布时间:2018-11-03| 来源:公理网 | 点击发表评论

Python的实例方法,类方法,静态方法之间的区别及调用关系

20180311/20180311065517_42578.png"alt=""/>

?如果只看这个图,很多人可能会看的一头雾水,特别是学过完全面向对象语言的同学,Python是双面向的,既可以面向函数编程,也可以面向对象编程,所谓面向函数就是单独一个.py文件,里面没有类,全是一些函数,调用的时候导入模块,通过模块名.函数名()即可调用,完全不需要类,那么你可能会问,那要类还有什么毛用?类就是用来面向对象编程啦,类可以有自己的属性,类可以创建很多实例,每个实例可以有不同的属性,这也就保存了很多私有的数据,总之都有存在的必要.
再来看上面这张图,在类里面定义的函数就是方法,类方法需要@classmethod修饰并且有个隐藏参数cls,实例方法必须有个参数self,静态方法必须有@staticmethod修饰,类和实例都可以访问静态方法,实例可以访问实例方法也可以访问类方法,类可以访问类方法也可以访问实例方法,访问实例方法必须要带参数self,可以理解为类其实也是一个实例,类访问实例方法不带参数会报错的.例如:
[python]viewplaincopy

???Traceback(mostrecentcalllast):?
?????File"L:\Python\GetAllFiles\testRead.py",line310,inmodule?
???????sumRow,dimension=util.SumofRow(outputfilename)?
???TypeError:SumofRow()takesexactly1argument(2given)?
类本身可以访问函数,实例却不行.所以在定义实例方法时要加一个self的参数:
[python]viewplaincopy

???defSumofRow(self,inputfile):?
???????csv_input=pd.read_csv(inputfile,error_bad_lines=False)?
???????returnsum(np.asarray(csv_input).T[1:]),csv_input.shape[1]?
从这个图片中学习到了,类方法,类静态方法,静态方法,注意它们是如何定义的,参数是怎么确定的,用的时候要注意。
说到这里,注意面向对象编程的思想,以及静态变量,静态方法,类,实例对象他们的生存期,知道生存期的差异就可以避免调用出错了。

最新新闻

手机浏览

公理网 版权所有

公理网 Total 0.019465(s) query 6, 报料QQ:点击这里

给我发消息