【问题标题】:How to use method without instance initialization?如何在没有实例初始化的情况下使用方法?
【发布时间】:2019-07-11 22:05:35
【问题描述】:

目前我这样做是为了使用SampleClass.method1()

output = SampleClass().method1(input_var)

但是,我想这样做:

output = SampleClass.method1(input_var).

我该怎么做?

class SampleClass(object):

    def __init__(self):
        self.var1 = 'var1'
        self.var2 = 'var2'

    def method1(self, input_var):
        self.var3 = self._method2(input_var)
        return self._method3(self.var3)

    def _method2(self):
        pass

    def _method3(self):
        pass

上面的类改成下面这样可行吗?

class SampleClass(object):

    def __init__(self, input_var):
        self.var1 = 'var1'
        self.var2 = 'var2'
        return self.method1(input_var)

    def method1(self, input_var):
        self.var3 = self._method2(input_var)
        return self._method3(self.var3)

    def _method2(self):
        pass

    def _method3(self):
        pass

谢谢。

【问题讨论】:

  • 你可以写一个类方法,但是method1是访问实例变量,所以它只作为实例方法才有意义。
  • method1() 在方法中使用实例self。你希望那是什么?
  • 你能给我一些示例代码吗?类结构可以改变,我只想写一个使用方法的类,它不必这样做:SampleClass().method1(input_var) 来调用该方法,而是这样做:SampleClass.method1(input_var )。谢谢。

标签: python class initialization static-methods class-method


【解决方案1】:

您要查找的内容称为静态方法。是的,你可以用 Python 编写一个。 here 已经发布了一个很好的解释示例。

【讨论】:

    猜你喜欢
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    相关资源
    最近更新 更多