【发布时间】:2020-04-07 18:13:35
【问题描述】:
我是Python的新手(我来自Java),我对类字段有以下疑问。
考虑这样的代码:
class Toy():
def __init__(self, color, age):
self.color = color
self.age = age
action_figure = Toy('red', 10)
好的,做了什么很清楚也很简单:
它定义了一个 Toy 类。在构造方法中定义了两个字段以及如何设置字段值。最后(在“main”中)创建了一个新的 Toy 实例,在构造函数调用中传递字段的值。
好的,很清楚......但我有一个疑问。在 Java 中定义相同的类我会这样做:
public class Toy {
private String color;
private int age;
// CONSTRUCTOR:
public Dog(String color, int age) {
this.color = color;
this.age = age;
}
}
好的,它很相似,但我发现了一个很大的不同。在我的 Java conde 中,我将类字段声明为构造函数方法之外的变量。在 Python 中,我直接在构造函数方法中定义类字段。所以这意味着在 Java 中我可以声明 n 个类字段并使用构造函数方法只初始化这些字段的一个子集,例如这样的:
public class Toy {
private String color;
private int age;
private String field3;
private String field4;
private String field5;
// CONSTRUCTOR:
public Dog(String color, int age) {
this.color = color;
this.age = age;
}
}
我还有 field3、field4 和 field5 字段,这些字段不会由我的构造函数初始化(以防我可以设置它们第二次使用 setter 方法获取值)。
我可以在 Python 中做类似的事情吗?我可以在构造方法之外声明类字段吗?
【问题讨论】:
-
不,Python 没有变量声明。当您分配给它们时,字段就会存在。这甚至不必在
__init__中,它可以在任何方法中,甚至可以在类之外
标签: python python-3.x python-object