是否可以将Java Static方法可视化为python中的函数+具有相同名称(与函数相同)的实例方法?

时间:2019-03-24 23:56:39

标签: java python java-8

我试图了解Java中的静态方法。我之前已经做过基本的python,所以我试图在Python中可视化Java的静态方法。

下面的代码中的静态方法是

class test{
    public static void main(String[] args) {
        printHello();
    }

    public static void printHello(){
        System.out.println("This is a Java's static method");
    } 
}

相当于这个吗?

def printhello():
    print("It is a printhello function")

class hello():
    def printhello(self):
        print("It is a printhello method of a instance")

由于可以在不创建对象的情况下访问 static 方法,因此def printhello将像这样工作。

并且当对象正在使用Java访问静态方法时,python类中提供的instance method会像这样工作。

如果没有,那么在python中可视化Java静态方法是正确的。

谢谢。

1 个答案:

答案 0 :(得分:4)

这里

class Hello:
    def printhello(self):
        ...

您正在传递self对该方法的引用。这意味着它是一个 instance 方法。
默认情况下, static 方法从不拥有对其包含类的实例的引用。

Python类 static 方法通常是使用@staticmethod注释定义的,它们不接受self

class Hello:
    @staticmethod
    def printhello():
        ...

因此,以上内容将变成Java

class Hello {
    public static void printhello() {
        ...
    } 
}

Java没有一级功能的概念,因此

def printhello():
    print("It is a printhello function")

并不是真正可翻译的,但是它通常是在Python中定义自由/静态函数的惯用方式。


您可能已经理解,回答问题

  

下面的代码中的静态方法是
  ...
  等于这个吗?

不,一点都不等同。