classmethod,staticmethod,还有类里面一般的的method有什么区别
2008-12-03 11:43
302 查看
> > 定义方式,传入的参数,调用方式都不相同。
> >
> > staticmethod 不需要传入self和cls对象,只有一般的参数。可以通过实例或类对象进行调用。
> > classmethod需要传入cls对象,可以通过实例和类对象进行高用。
> > 一般的method需要传入self实例对象。
>
> 参与讨论一下:
>
> 从学习java中类比过来,
> 如果在一个文件范围内(文件中定义有类,类中还定义有方法):
> staticmethod相当于在一个包(文件)被导入时,这个方法在内存中就相应产生了。我们可以对它进行调用。
>
> classmethod相当于在一个类被声明时(没有定义,这时还没有类的实例),这个方法在内存中相应产生,我们可对其进行调用。
>
> 第三种就是一般的方法,需要在声明并定义一个类,这时产生了类的实例,内存中才能得到这个实例的地址,这时才可以调用。
>
>
其实方法就是代码,python在导入模块时会进行编译处理(如果需要的话),这时我想三种方法应该都已经存在了。所以这三种方法的生成时间倒不是什么问题,它们处理的范围和起到的作用是用来进行区分的依据。
> >
> > staticmethod 不需要传入self和cls对象,只有一般的参数。可以通过实例或类对象进行调用。
> > classmethod需要传入cls对象,可以通过实例和类对象进行高用。
> > 一般的method需要传入self实例对象。
>
> 参与讨论一下:
>
> 从学习java中类比过来,
> 如果在一个文件范围内(文件中定义有类,类中还定义有方法):
> staticmethod相当于在一个包(文件)被导入时,这个方法在内存中就相应产生了。我们可以对它进行调用。
>
> classmethod相当于在一个类被声明时(没有定义,这时还没有类的实例),这个方法在内存中相应产生,我们可对其进行调用。
>
> 第三种就是一般的方法,需要在声明并定义一个类,这时产生了类的实例,内存中才能得到这个实例的地址,这时才可以调用。
>
>
其实方法就是代码,python在导入模块时会进行编译处理(如果需要的话),这时我想三种方法应该都已经存在了。所以这三种方法的生成时间倒不是什么问题,它们处理的范围和起到的作用是用来进行区分的依据。
相关文章推荐
- Python中classmethod, staticmethod和普通method的区别
- maven 和svn有什么区别啊,还有一般用哪个的啊
- python中@staticmethod 、@classmethod 与一般方法的区别
- TVS和一般的稳压二极管有什么区别
- 「带 BOM 的 UTF-8」和「无 BOM 的 UTF-8」有什么区别?网页代码一般使用哪个?
- jquery里面.length和.size() index()有什么区别
- 正则表达式里面 .* 和 .*? 有什么区别?
- MFC里面ON_COMMAND和ON_MESSAGE有什么区别
- 应用管理 JNDI里面加和不加java:comp/env/前缀有什么区别?
- Android中this.*与*.this还有*.class的区别是什么?
- VC里面TEXT()是什么和_T有什么区别
- python 3全栈开发-面向对象之绑定方法(classmethod与staticmethod的区别)、多态、封装的特性property
- 基于python中staticmethod和classmethod的区别(详解)
- jQuery里面用this和用$(this)有什么区别?
- python - @staticmethod和@classmethod的作用与区别
- Servlet与一般Java类的区别是什么?
- protel里面header、con、PIN三种接口有什么区别
- fopen里面那个二进制打开和ascii打开有什么区别
- 同步和异步的区别和联系以及一般在什么情况下使用它们
- 【Python】Staticmethod和classmethod的区别