内のオブジェクトを更新する私は、このクラスの作成:パイソン:セット
class Device(object):
"""Holds searched SSID, searched BSSID and
own MAC-Addr information about a device"""
def __init__(self, mac):
self.mac = mac
self.bssid_set = set()
self.ssid_set = set()
def add_bssid(self, bssid):
self.bssid_set.add(bssid)
def add_ssid(self, ssid):
self.ssid_set.add(ssid)
def __str__(self):
ssid_str = ', '.join(self.ssid_set)
bssid_str = ', '.join(self.bssid_set)
return "{mac} has searched for {ssid_str} and {bssid_str}".format(
mac = self.mac,
ssid_str = ssid_str,
bssid_str = bssid_str)
をし、私が見つけたときに私は、このクラスの複数のオブジェクトを作成する集合(重複なし)でそれらを入れて、オブジェクトを更新したいです別のssidまたはbssidを持つ新しいプローブ要求。そのため、セットの識別子はmacでなければなりません。
セットを正しく使用する方法が見えないか、セットを更新するだけで新しいオブジェクトが追加されるため、間違ったものを試していますが、これは必要ありません。ここに行くための神託の方法だろう
mac = 'abcd'
ssid = set(['ssid1', 'ssid2'])
bssid = set(['bssid1', 'bssid2'])
dict[mac] = [ssid.update('newssid'), bssid.update('newbssid')]
または何:
ちょうどこのような辞書を使用することが賢明でしょうか?
編集:誤って入れ「」マックの周りのdict
設定は '__hash__'機能による値の戻り値に基づいてオブジェクトのユニークに識別する。オブジェクトの一意性を識別するために必要なロジックでこの関数をオーバーライドすることができます。またチェック:[Pythonでカスタムクラスの設定操作を実行する](http://stackoverflow.com/questions/5754440/performing-set-operations-on-custom-classes-in-python) –