【发布时间】:2016-08-01 12:10:34
【问题描述】:
我有一个类,用于将二进制流转换为人类可读的。我想双向翻译它,因为我发送和接收二进制消息。这个类的属性大多以相同的方式制作——将字节从 startbyte 带到 stopbyte 并对其进行解码——所以我决定使用一个属性来做到这一点。但是我可以在定义我的类属性时创建一个通用的“属性”吗?
class Packet(object):
def __init__(self, data):
self.data = data
def standard_getter(startbyte, stopbyte):
def getter(self):
return decode(self.data[startbyte:stopbyte])
return getter
def standard_setter(startbyte, stopbyte):
def setter(self, value):
self.data[startbyte:stopbyte] = encode(value)
return setter
# the way I define properties by now:
protocol_type = property(standard_getter(16, 18), standard_setter(16, 18))
protocol_sub_type = property(standard_getter(18, 20), standard_setter(18, 20))
# the way I would like to do it:
protocol_type = property(standard_property(16, 18))
# or
protocol_type = standard_property(16, 18)
我试图定义一个函数,它接受两个参数并返回属性(getter,setter),但我总是坚持为函数提供“self”实例。有什么好的方法可以实现吗?
【问题讨论】:
标签: python properties