【问题标题】:Static attributes (Python vs Java)静态属性(Python 与 Java)
【发布时间】:2016-05-03 17:37:02
【问题描述】:

Python类属性和Java静态属性有什么区别?

例如,

在 Python 中

class Example:
    attribute = 3

在 Java 中

public class Example {

    private static int attribute;

}

在 Python 中,可以使用对实例的引用来访问静态属性吗?

【问题讨论】:

  • 可以通过类本身通过实例访问Python类属性。

标签: java python class attributes


【解决方案1】:

在 Python 中,可以有一个类变量和一个实例变量同名 [Static class variables in Python]:

>>> class MyClass:
...     i = 3
...
>>> MyClass.i
3 

>>> m = MyClass()
>>> m.i = 4
>>> MyClass.i, m.i
>>> (3, 4)

在 Java 中,不能有同名的静态和非静态字段(以下将编译,您会收到错误“重复字段 MyClass.i”):

public class MyClass {
  private static int i;
  private int i;
}

此外,如果您尝试从实例中分配静态字段,它会更改静态字段:

public class MyClass {
  private static int i = 3;

  public static void main(String[] args) {
    MyClass m = new MyClass();
    m.i = 4;

    System.out.println(MyClass.i + ", " + m.i);
  }
}

4、4


在 Java 和 Python 中,您都可以从实例访问静态变量,但您不需要:

Python:

>>> m = MyClass()
>>> m.i
3
>>> MyClass.i
3

Java:

  public static void main(String[] args) {
    System.out.println(new MyClass().i);
    System.out.println(MyClass.i);
  }

3
3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 2018-10-04
    • 2020-03-24
    • 2014-12-07
    • 1970-01-01
    • 2012-11-09
    相关资源
    最近更新 更多