首页 > 解决方案 > 可以将Java静态方法可视化为python中的函数+具有相同名称的实例方法(作为函数)吗?

问题描述

我想了解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")

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

当一个对象在 Java 中访问静态方法时,instance methodpython 类中提供的方法会像这样工作。

如果不是,那么在 python 中对 java 的静态方法的正确可视化是什么。

谢谢。

标签: javapythonjava-8

解决方案


这里

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

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

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

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

所以上面会变成,在Java中

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

Java没有一级函数的概念,所以这个

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

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


您可能已经了解,回答您的问题

下面代码中的静态方法
……是否
与此等价?

不,它根本不等同。


推荐阅读