java - 可以将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 method
python 类中提供的方法会像这样工作。
如果不是,那么在 python 中对 java 的静态方法的正确可视化是什么。
谢谢。
解决方案
这里
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 中定义自由/静态函数的一种更惯用的方式。
您可能已经了解,回答您的问题
下面代码中的静态方法
……是否
与此等价?
不,它根本不等同。
推荐阅读
- javascript - 你可以解释吗?
- vue.js - 运行“vue 升级”时出现“无法解决依赖关系”错误
- android - 如何处理房间关系、嵌入列表和实时数据?
- django - Django 模型实例缓存 - 相同的记录
- sqlite - 序列化 R 对象并将其保存到 sqlite3 数据库
- javascript - 为什么我的 jquery 方法 window.onload() 不起作用?
- java - 创建名为“redisConnectionFactory”的 bean 时出错
- vue.js - 验证数据表中的动态标题
- firebase - “用户”类没有默认构造函数。火力基地
- mysql - REGEXP_SUBSTR_GPL 未列出,我不清楚它需要什么参数。为什么要在 REGEXP_SUBSTR 上使用它?