0

私はPythonでOOPを学んでいます。次のように表示するようなものを実装したい: firstNamelastName辞書として住所を持つ人の、'state': someState, 'city': someCity

終わったよ:

class data:
    def __init__(self, firstName, lastName, **address):
        self.firstName = firstName
        self.lastName = lastName
        self.address = {
            "state": self.state,
            "city" : self.city
        }

私がしたとき:

>>> d = data("a", "b", 'state' : "stat", 'city' : "ci")
SyntaxError: invalid syntax
>>> d = data("a", "b", 'state'="stat", 'city'="ci")
SyntaxError: keyword can't be an expression

私のコードに間違いがありますか、それとも辞書にアクセスする構文が間違っていますか。私はそれを把握することはできません。

4

4 に答える 4

2

使用:しているコンストラクターで正しくない場合、kwargsはname=valである必要があります。また、設定できないself.stateself.city、まだ設定していないためです。kwargs辞書にアクセスして、それらを引き出す必要があります。**アドレスを実行したい理由はありますか?

class data:
    def __init__(self, firstName, lastName, **address):
        self.firstName = firstName
        self.lastName = lastName
        self.address = {
             "state": address.get('state', ''),
             "city" : address.get('city', ''),

        }

指定した方法で住所を指定する理由は実際にはありません...明示的なkwargsとして州/都市を実行することをお勧めします。

class data:
    def __init__(self, firstName, lastName, state='', city=''):
        self.firstName = firstName
        self.lastName = lastName
        self.address = {
             "state": state,
             "city" : city,

        }

d = data("a", "b", state="stat", city="ci")
于 2012-04-05T12:26:37.420 に答える
2

コンストラクターへの引数として新しい dict を定義してから、このようにコンストラクターにコピーするだけです。

class Data:
    def __init__(self, firstName, lastName, address):
        self.firstName = firstName
        self.lastName = lastName
        self.address = dict(address)

data = Data("first", "last", dict(state="pa", city="pittsburgh"))
于 2012-04-05T12:33:15.147 に答える
0

次のように使用する必要があります。

d = data("a", "b", state="stat", city="ci")

入力は文字列ではなく名前である必要があります。したがって、のようなものを入力することはできませんcity-zip。ダッシュが含まれているため(Pythonではマイナスです)。

于 2012-04-05T12:26:40.990 に答える
0

このように呼び出す必要があります

d = data("a", "b", state="stat", city="ci")

self.stateまた、割り当てられるまで、またはそのような変数はありませんself.city

例えば。

self.state = address['state']
self.city = address['city']
于 2012-04-05T12:32:17.157 に答える