2006年12月05日 星期二 16:00
classmethod,staticmethod,还有类里面一般的的method有什么区别?
2006年12月05日 星期二 16:06
On 12/5/06, leopay <leopay在gmail.com> wrote: > classmethod,staticmethod,还有类里面一般的的method有什么区别? 定义方式,传入的参数,调用方式都不相同。 staticmethod 不需要传入self和cls对象,只有一般的参数。可以通过实例或类对象进行调用。 classmethod需要传入cls对象,可以通过实例和类对象进行高用。 一般的method需要传入self实例对象。 -- I like python! UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad My Blog: http://www.donews.net/limodou
2006年12月05日 星期二 16:12
limodou 写道: > On 12/5/06, leopay <leopay在gmail.com> wrote: > >> classmethod,staticmethod,还有类里面一般的的method有什么区别? >> > > 定义方式,传入的参数,调用方式都不相同。 > > staticmethod 不需要传入self和cls对象,只有一般的参数。可以通过实例或类对象进行调用。 > classmethod需要传入cls对象,可以通过实例和类对象进行高用。 > 一般的method需要传入self实例对象。 > > 他们具体作用有什么区别呢?
2006年12月05日 星期二 16:13
http://wiki.woodpecker.org.cn/moin/PyNewStyleClass ÕâƪÎÄÕ¶ÔÄãÓ¦¸ÃÓаïÖú¡£ 2006/12/5, leopay <leopay在gmail.com>: > > limodou дµÀ: > > On 12/5/06, leopay <leopay在gmail.com> wrote: > > > >> classmethod£¬staticmethod£¬»¹ÓÐÀàÀïÃæÒ»°ãµÄµÄmethodÓÐʲôÇø±ð£¿ > >> > > > > ¶¨Ò巽ʽ£¬´«ÈëµÄ²ÎÊý£¬µ÷Ó÷½Ê½¶¼²»Ïàͬ¡£ > > > > staticmethod ²»ÐèÒª´«ÈëselfºÍcls¶ÔÏó£¬Ö»ÓÐÒ»°ãµÄ²ÎÊý¡£¿ÉÒÔͨ¹ýʵÀý»òÀà¶ÔÏó½øÐе÷Óᣠ> > classmethodÐèÒª´«Èëcls¶ÔÏ󣬿ÉÒÔͨ¹ýʵÀýºÍÀà¶ÔÏó½øÐиßÓᣠ> > Ò»°ãµÄmethodÐèÒª´«ÈëselfʵÀý¶ÔÏó¡£ > > > > > ËûÃǾßÌå×÷ÓÃÓÐʲôÇø±ðÄØ£¿ > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese -- »¶Ó·ÃÎÊ£º http://blog.csdn.net/ccat ÁõöÎ March.Liu -------------- 下一部分 -------------- Ò»¸öHTML¸½¼þ±»ÒƳý... URL: http://python.cn/pipermail/python-chinese/attachments/20061205/96465ddf/attachment.html
2006年12月05日 星期二 16:48
On 12/5/06, leopay <leopay在gmail.com> wrote: > limodou 写道: > > On 12/5/06, leopay <leopay在gmail.com> wrote: > > > >> classmethod,staticmethod,还有类里面一般的的method有什么区别? > >> > > > > 定义方式,传入的参数,调用方式都不相同。 > > > > staticmethod 不需要传入self和cls对象,只有一般的参数。可以通过实例或类对象进行调用。 > > classmethod需要传入cls对象,可以通过实例和类对象进行高用。 > > 一般的method需要传入self实例对象。 > > > > > 他们具体作用有什么区别呢? 静态,类方法相关于全局方法。一般与具体的类无关。 -- I like python! UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad My Blog: http://www.donews.net/limodou
2006年12月05日 星期二 17:05
limodou 写道: > On 12/5/06, leopay <leopay在gmail.com> wrote: > >> limodou 写道: >> >>> On 12/5/06, leopay <leopay在gmail.com> wrote: >>> >>> >>>> classmethod,staticmethod,还有类里面一般的的method有什么区别? >>>> >>>> >>> 定义方式,传入的参数,调用方式都不相同。 >>> >>> staticmethod 不需要传入self和cls对象,只有一般的参数。可以通过实例或类对象进行调用。 >>> classmethod需要传入cls对象,可以通过实例和类对象进行高用。 >>> 一般的method需要传入self实例对象。 >>> >>> >>> >> 他们具体作用有什么区别呢? >> > > 静态,类方法相关于全局方法。一般与具体的类无关。 > > 也就是说静态,类方法一般用在抽象类或父类中。而类的一般方法用在具体的类中
2006年12月05日 星期二 17:06
PythonûÓгéÏóÀàµÄ¸ÅÄ¾²Ì¬·½·¨ÊÇΪÁ˼æÈÝÆäËü±à³ÌÓïÑÔµÄÓ﷨ϰ¹ßÉè¼ÆµÄ£¬±¾Éí²»ÊÇPython±ØÐëµÄ¶«Î÷¡£Àà·½·¨ÊÇÌṩ¸øÀàÐͶÔÏóµ÷Óõģ¬Ö÷ÒªÓÃÓÚmeta class±à³Ì£¬ÆÕͨµÄʵÀý·½·¨Êǹ©ÊµÀý¶ÔÏóµ÷Óõģ¬Õâ¸öÊÇ»ù±¾µÄOO¹¦ÄÜ¡£ 2006/12/5, leopay <leopay在gmail.com>: > > limodou дµÀ: > > On 12/5/06, leopay <leopay在gmail.com> wrote: > > > >> limodou дµÀ: > >> > >>> On 12/5/06, leopay <leopay在gmail.com> wrote: > >>> > >>> > >>>> classmethod£¬staticmethod£¬»¹ÓÐÀàÀïÃæÒ»°ãµÄµÄmethodÓÐʲôÇø±ð£¿ > >>>> > >>>> > >>> ¶¨Ò巽ʽ£¬´«ÈëµÄ²ÎÊý£¬µ÷Ó÷½Ê½¶¼²»Ïàͬ¡£ > >>> > >>> staticmethod ²»ÐèÒª´«ÈëselfºÍcls¶ÔÏó£¬Ö»ÓÐÒ»°ãµÄ²ÎÊý¡£¿ÉÒÔͨ¹ýʵÀý»òÀà¶ÔÏó½øÐе÷Óᣠ> >>> classmethodÐèÒª´«Èëcls¶ÔÏ󣬿ÉÒÔͨ¹ýʵÀýºÍÀà¶ÔÏó½øÐиßÓᣠ> >>> Ò»°ãµÄmethodÐèÒª´«ÈëselfʵÀý¶ÔÏó¡£ > >>> > >>> > >>> > >> ËûÃǾßÌå×÷ÓÃÓÐʲôÇø±ðÄØ£¿ > >> > > > > ¾²Ì¬£¬Àà·½·¨Ïà¹ØÓÚÈ«¾Ö·½·¨¡£Ò»°ãÓë¾ßÌåµÄÀàÎ޹ء£ > > > > > Ò²¾ÍÊÇ˵¾²Ì¬£¬Àà·½·¨Ò»°ãÓÃÔÚ³éÏóÀà»ò¸¸ÀàÖС£¶øÀàµÄÒ»°ã·½·¨ÓÃÔÚ¾ßÌåµÄÀàÖÐ > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese -- »¶Ó·ÃÎÊ£º http://blog.csdn.net/ccat ÁõöÎ March.Liu -------------- 下一部分 -------------- Ò»¸öHTML¸½¼þ±»ÒƳý... URL: http://python.cn/pipermail/python-chinese/attachments/20061205/e9ac9b84/attachment.htm
2006年12月05日 星期二 17:08
On 12/5/06, leopay <leopay在gmail.com> wrote: > limodou 写道: > > On 12/5/06, leopay <leopay在gmail.com> wrote: > > > >> limodou 写道: > >> > >>> On 12/5/06, leopay <leopay在gmail.com> wrote: > >>> > >>> > >>>> classmethod,staticmethod,还有类里面一般的的method有什么区别? > >>>> > >>>> > >>> 定义方式,传入的参数,调用方式都不相同。 > >>> > >>> staticmethod 不需要传入self和cls对象,只有一般的参数。可以通过实例或类对象进行调用。 > >>> classmethod需要传入cls对象,可以通过实例和类对象进行高用。 > >>> 一般的method需要传入self实例对象。 > >>> > >>> > >>> > >> 他们具体作用有什么区别呢? > >> > > > > 静态,类方法相关于全局方法。一般与具体的类无关。 > > > > > 也就是说静态,类方法一般用在抽象类或父类中。而类的一般方法用在具体的类中 也不是这么说。如果没有所谓的抽象类或父类呢。只能说是它们象是公共函数,但是要么与类有些关系,要么希望写到类中一起处理。但有时的确与实例无关。 -- I like python! UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad My Blog: http://www.donews.net/limodou
2006年12月05日 星期二 17:12
建议看看权威的C++或者Java的OOP书籍。对于类方法的讲解也是用于在Python,只不过Python的实现方式不同。OOP的概念是不会变的。 On 12/5/06, leopay <leopay at gmail.com> wrote: > classmethod,staticmethod,还有类里面一般的的method有什么区别? > _______________________________________________ > python-chinese > Post: send python-chinese at lists.python.cn > Subscribe: send subscribe to python-chinese-request at lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese -- GoogleTalk: qcxhome at gmail.com MSN: qcxhome at hotmail.com My Space: tkdchen.spaces.live.com BOINC: boinc.berkeley.edu 中国分布式计算总站: www.equn.com
2006年12月05日 星期二 17:47
> > classmethod,staticmethod,还有类里面一般的的method有什么区别? > staticmethod 基本上和一个全局函数差不多,只不过可以通过类或类的实例对象(python里说光说对象总是容易产生混淆,因为什么都是对象,包括类,而实际上类实例对象才是对应静态语言中所谓对象的东西)来调用而已,不会隐式地传入任何参数。这个和静态语言中的静态方法比较像。 classmethod 是和一个class相关的方法,可以通过类或类实例调用,并将该class对象(不是class的实例对象)隐式地当作第一个参数传入。就这种方法可能会比较奇怪一点,不过只要你搞清楚了python里class也是个真实地存在于内存中的对象,而不是静态语言中只存在于编译期间的 类型,就好办了。 正常的方法就是和一个类的实例对象相关的方法,通过类实例对象进行调用,并将该实例对象隐式地作为第一个参数传入,这个也和其它语言比较像。 -- http://codeplayer.blogspot.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://python.cn/pipermail/python-chinese/attachments/20061205/dba27f81/attachment.html
2006年12月05日 星期二 20:48
2006/12/5, limodou <limodou在gmail.com>: > > On 12/5/06, leopay <leopay在gmail.com> wrote: > > classmethod£¬staticmethod£¬»¹ÓÐÀàÀïÃæÒ»°ãµÄµÄmethodÓÐʲôÇø±ð£¿ > > ¶¨Ò巽ʽ£¬´«ÈëµÄ²ÎÊý£¬µ÷Ó÷½Ê½¶¼²»Ïàͬ¡£ > > staticmethod ²»ÐèÒª´«ÈëselfºÍcls¶ÔÏó£¬Ö»ÓÐÒ»°ãµÄ²ÎÊý¡£¿ÉÒÔͨ¹ýʵÀý»òÀà¶ÔÏó½øÐе÷Óᣠ> classmethodÐèÒª´«Èëcls¶ÔÏ󣬿ÉÒÔͨ¹ýʵÀýºÍÀà¶ÔÏó½øÐиßÓᣠ> Ò»°ãµÄmethodÐèÒª´«ÈëselfʵÀý¶ÔÏó¡£ ²ÎÓëÌÖÂÛһϣº ´ÓѧϰjavaÖÐÀà±È¹ýÀ´£¬ Èç¹ûÔÚÒ»¸öÎļþ·¶Î§ÄÚ(ÎļþÖж¨ÒåÓÐÀ࣬ÀàÖл¹¶¨ÒåÓз½·¨)£º staticmethodÏ൱ÓÚÔÚÒ»¸ö°ü£¨Îļþ£©±»µ¼Èëʱ£¬Õâ¸ö·½·¨ÔÚÄÚ´æÖоÍÏàÓ¦²úÉúÁË¡£ÎÒÃÇ¿ÉÒÔ¶ÔËü½øÐе÷ÓᣠclassmethodÏ൱ÓÚÔÚÒ»¸öÀà±»ÉùÃ÷ʱ£¨Ã»Óж¨Ò壬Õâʱ»¹Ã»ÓÐÀàµÄʵÀý£©£¬Õâ¸ö·½·¨ÔÚÄÚ´æÖÐÏàÓ¦²úÉú£¬ÎÒÃǿɶÔÆä½øÐе÷ÓᣠµÚÈýÖÖ¾ÍÊÇÒ»°ãµÄ·½·¨£¬ÐèÒªÔÚÉùÃ÷²¢¶¨ÒåÒ»¸öÀ࣬Õâʱ²úÉúÁËÀàµÄʵÀý£¬ÄÚ´æÖвÅÄܵõ½Õâ¸öʵÀýµÄµØÖ·£¬Õâʱ²Å¿ÉÒÔµ÷Óᣠ-- > I like python! > UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad > My Blog: http://www.donews.net/limodou > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese -------------- 下一部分 -------------- Ò»¸öHTML¸½¼þ±»ÒƳý... URL: http://python.cn/pipermail/python-chinese/attachments/20061205/fe9e0da9/attachment.html
2006年12月05日 星期二 20:53
On 12/5/06, boyeestudio <boyee118在gmail.com> wrote: > > > 2006/12/5, limodou <limodou在gmail.com>: > > On 12/5/06, leopay <leopay在gmail.com> wrote: > > > classmethod,staticmethod,还有类里面一般的的method有什么区别? > > > > 定义方式,传入的参数,调用方式都不相同。 > > > > staticmethod 不需要传入self和cls对象,只有一般的参数。可以通过实例或类对象进行调用。 > > classmethod需要传入cls对象,可以通过实例和类对象进行高用。 > > 一般的method需要传入self实例对象。 > > 参与讨论一下: > > 从学习java中类比过来, > 如果在一个文件范围内(文件中定义有类,类中还定义有方法): > staticmethod相当于在一个包(文件)被导入时,这个方法在内存中就相应产生了。我们可以对它进行调用。 > > classmethod相当于在一个类被声明时(没有定义,这时还没有类的实例),这个方法在内存中相应产生,我们可对其进行调用。 > > 第三种就是一般的方法,需要在声明并定义一个类,这时产生了类的实例,内存中才能得到这个实例的地址,这时才可以调用。 > > 其实方法就是代码,python在导入模块时会进行编译处理(如果需要的话),这时我想三种方法应该都已经存在了。所以这三种方法的生成时间倒不是什么问题,它们处理的范围和起到的作用是用来进行区分的依据。 -- I like python! UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad My Blog: http://www.donews.net/limodou
Zeuux © 2025
京ICP备05028076号