私は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"
Python には実際には変数がありません。メンバ アクセスに関しては誰もが大人のように扱われますが、いずれにしてもgetter / setterメソッドをprivate
実装することになるでしょう。変数名のプレフィックスは、 「プライベート」変数の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?
# ...