返回介绍

使用静态和类方法

发布于 2024-01-29 22:24:15 字数 1171 浏览 0 评论 0 收藏 0

现在,还有另一个选择,可以编写和类相关联的简单函数。在Python 2.2中,可以用静态和类方法编写类,两者都不需要在启用时传入实例参数。要设计这个类的方法时,类要调用内置函数staticmethod和classmethod,就像之前讨论过的新式类中提到的那样。它们都把一个函数标记为特殊的,例如,如果是静态方法的话不需要实例,如果是一个类方法的话需要一个类参数。例如:

注意:程序代码中最后两个赋值语句只是重新赋值方法名称smeth和cmeth而已。在class语句中,通过赋值语句进行属性的建立和修改,所以这些最后的赋值语句会覆盖稍早由def所做的赋值。

从技术上讲,Python现在支持三种类相关方法:实例、静态和类。此外,Python 3.0也允许类中的简单函数在通过一个类调用的时候充当静态方法的角色,而不需要额外的协议,从而扩展了这一模式。

实例方法是我们在本书中所见的常规的(并且是默认的)情况。一定要用实例对象调用实例方法。通过实例调用时,Python会把实例自动传给第一个(最左侧)参数。类调用时,需要手动传入实例(为了简单起见,我们在这样的交互会话中省略了一些类导入)。

反之,静态方法调用时不需要实例参数。与类之外的简单函数不同,其变量名位于定义所在类的范围内,属于局部变量,而且可以通过继承查找。非实例函数通常在Python 3.0中可以通过类调用,但是,这在Python 2.6中并非默认的。使用staticmethod内置方法允许这样的方法在Python 3.0中通过一个实例调用,而在Python 2.6中通过类和实例调用(前者在Python 3.0中没有staticmethod也能工作,但后者不可以):

类方法类似,但Python自动把类(而不是实例)传入类方法第一个(最左侧)参数中,不管它是通过一个类或一个实例调用:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文