我是 Python 新手,我很难理解如何在 Python 中执行以下操作(例如,我将如何在 Java 中执行)
class Person{
private String name;
private Address address;
public Person(String xyz, Address a) {
this.name = xyz;
this.address = a;
}
....
}
我是 Python 新手,我很难理解如何在 Python 中执行以下操作(例如,我将如何在 Java 中执行)
class Person{
private String name;
private Address address;
public Person(String xyz, Address a) {
this.name = xyz;
this.address = a;
}
....
}
我不知道你为什么认为构造函数中有另一个类,但上面的 Java 在 Python 中可能看起来像这样:
class Person (object):
def __init__ (self, xyz, a):
self.name = xyz
self.address = a
作为一种动态类型语言,Python 在编译代码时不需要知道类型是什么样的。相反,它动态创建对象,并在需要时添加属性。这不仅允许您在初始化程序中添加之前未声明的实例字段,还允许您在创建对象后添加内容:
x = Person("poke", "My address")
x.phoneNumber = "012345679"
就像提到的@poke 一样,您可以执行以下操作:
class Person (object):
def __init__ (self, xyz, a):
self.name = xyz
self.address = a
如果你的意思是也有默认的构造函数,那么你可以有类似的东西:
class Person (object):
def __init__ (self, xyz=None, a=None):
self.name = xyz
self.address = a
这将允许您在没有参数的情况下调用构造函数。
您可以将构造函数用作:
p = Person("yadda","bla")
或者
p = Person()
Python 并没有真正的private
变量,在成员访问方面每个人都被视为成年人,但是无论如何你最终可能会实现getter / setter方法。请注意,_
变量名称前缀只是“私有”变量的PEP-8命名约定,尽管它实际上并没有停止对它们的访问。
class Person(object): # subclass object for a new-style class
def __init__(self, name, address):
self._name = name
self._address = address
@property
def name(self):
return self._name
@name.setter
def name(self, name):
self._name = name
@property
def address(self):
return self._address
@address.setter
def address(self, address):
self._address = address
像这样的东西:
class Person(object):
def __init__(self, xyz, a):
self.name = xyz
self.address = a
# ...
现在,当然你可以在构造函数中定义一个新类:
class Person(object):
def __init__(self, xyz, a):
self.name = xyz
self.address = a
class Glass(object):
def __init__(self):
self.glass_name = xyz
#... whatever - but what purpose would this serve?
# ...