当前位置: 首页 > 面试题库 >

在Python中使用静态方法的优点是什么?

张敏达
2023-03-14
问题内容

我在代码中遇到了python中的未绑定方法错误

import random

class Sample(object):
'''This class defines various methods related to the sample'''

    def drawSample(samplesize,List):
        sample=random.sample(List,samplesize)
        return sample

Choices=range(100)
print Sample.drawSample(5,Choices)

在阅读了许多有用的文章之后,我想到了如何在@staticmethod上面添加内容以使代码正常工作。我是python新手。有人可以解释一下为什么要定义静态方法吗?还是为什么不将所有方法都定义为静态方法?


问题答案:

静态方法的使用受到限制,因为它们无法访问类的实例的属性(就像常规html" target="_blank">方法一样),并且它们也不能访问类本身的属性(就像类方法一样) )。

因此,它们对于日常方法没有用。

但是,它们对于将某些实用程序功能与一个类组合在一起很有用-例如,从一种类型到另一种类型的简单转换-
除了提供的参数(可能还有模块全局的某些属性)之外,不需要访问任何信息。 )

可以将它们放在班级之外,但是将它们分组在班级内可能在仅适用于此的地方才有意义。

您还可以通过实例或类而不是模块名称来引用该方法,这可以帮助读者了解该方法与哪个实例相关。



 类似资料:
  • 问题内容: Python中是否可以有无需初始化类即可调用的静态方法,例如: 问题答案: 是的,使用装饰器 请注意,某些代码可能使用旧的方法来定义静态方法,而将其staticmethod用作函数而不是装饰器。仅当你必须支持Python的旧版本(2.2和2.3)时,才应使用此选项。 这与第一个示例完全相同(使用),只是不使用漂亮的装饰器语法 最后,要谨慎使用!在极少数情况下,Python中需要使用静态

  • 我经常使用静态关键字,但不清楚静态关键字主要用途是什么。可以任意定义,这是在面向对象的java显示方法中使用的

  • 问题内容: 为什么我们不能在非静态内部类中使用静态方法? 如果我将内部类设为静态,则可以工作。为什么? 问题答案: 因为内部类的实例与外部类的实例隐式关联,所以它本身不能定义任何静态方法。由于静态嵌套类无法直接引用其封闭类中定义的实例变量或方法,因此只能通过对象引用使用它们,因此在静态嵌套类中声明静态方法是安全的。

  • 我知道在Java中,静态方法和实例方法一样是继承的,不同的是,当它们被重新声明时,父实现是隐藏的,而不是重写的。好吧,这有道理。但是,Java教程指出 接口中的静态方法从不继承。 然而,

  • 问题内容: 让我们假设在我的编码环境中强加了一条规则(或一条经验法则),该类上的任何不使用,修改或以其他方式需要任何实例变量来完成其工作的方法都应设为静态。是否有任何固有的编译时间,运行时或其他缺点? (为进一步澄清而编辑) 我知道这个问题有些悬而未决,因此我对此表示歉意。我的询问意图主要是在“辅助”方法的背景下进行的。实用程序类(带有私有CTOR,因此无法实例化)作为我们已经做过的静态方法的持有

  • 问题内容: 为什么我们不能在非静态内部类中使用静态方法? 如果我将内部类设为静态,则可以工作。为什么呢 问题答案: 因为内部类的实例与外部类的实例隐式关联,所以它本身不能定义任何静态方法。由于静态嵌套类无法直接引用其封闭类中定义的实例变量或方法,因此只能通过对象引用使用它们,因此在静态嵌套类中声明静态方法是安全的。