我有一个类变量,一个列表,一次可以包含多个值(MAC地址)。我希望能够将值作为逗号分隔的字符串而不是列表返回。我知道我可以这样做:
class test(object):
def __init__(self, mac):
self.mac = mac
@property
def mac(self):
return self.mac
# return ','.join(map(str, self.mac))
@mac.setter
def mac(self, mac):
self.mac = mac
#self.mac = ','.join(map(str, mac))
def macs_as_a_list(self):
return ','.join(map(str, self.mac))
m1 = test(mac=['aa:bb:cc:dd:ee:ff', '11:22:33:44:55:66'])
m1.mac
Out: ['aa:bb:cc:dd:ee:ff', '11:22:33:44:55:66']
Desired: 'aa:bb:cc:dd:ee:ff,11:22:33:44:55:66'
这当然有效:
m1.macs_as_a_list()
但是,有没有办法在setter中进行此转换(或者在上面的注释行中演示的getter中)?
答案 0 :(得分:1)
常见的方法是使用私有变量来存储属性背后的原始值,并使用getter来相应地格式化它。
class test(object):
def __init__(self, mac):
self.mac = mac
@property
def mac(self):
return ','.join(self._mac)
@mac.setter
def mac(self, mac):
self._mac = mac
m1 = test(['aa:bb:cc:dd:ee:ff', '11:22:33:44:55:66'])
print(m1.mac) # 'aa:bb:cc:dd:ee:ff,11:22:33:44:55:66'