0

私はPythonが初めてで、Pythonで次のことを行う方法を理解するのに苦労しています(たとえば、Javaで行う方法)

class Person{ 
 private String name;
 private Address address; 
 public Person(String xyz, Address a) {
    this.name = xyz;
    this.address = a;
}

 .... 
}
4

4 に答える 4

4

コンストラクター内に別のクラスがあると思う理由はわかりませんが、上記の 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"
于 2013-05-10T11:38:01.707 に答える
0

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
于 2013-05-10T11:47:46.497 に答える
0

このようなもの:

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?
    # ...
于 2013-05-10T11:38:34.413 に答える