我正在开发一个从卡中读取字节码的智能卡应用程序。
我想要一个<A>Field()
应该表示保存数据的字段的类,<type 'A'>
用字节码值实例化,我想尽可能自然地操作它。
#ex.: to instatiate a new IntField with value 31611
IntField([0, 0, 123, 123])
我想到了这样的事情:
class IntField(object):
value = None
bytecode = []
def __init__(self, bytecode):
self.bytecode = bytecode
# decodes bytecode to int
self.decode()
def __get__(self):
return self.value
def __set__(self, value):
self.value = value
# encodes new value into bytecode
self.encode()
# magic methods to opperate with int
def some_behavior(self):
print 'some_behavior'
def decode(self):
# applies decoding
self.value = new_value
def encode(self):
# applies encoding
self.bytecode = new_bytecode
所以我可以使用如下:
>>> a = IntField([0, 0, 0, 3])
>>> print a
3
>>> a.some_behavior()
some_behavior
>>> print type(a)
<class '__main__.IntField'>
>>> a = 4 + a
>>> print a
7
>>> print type(a)
<class '__main__.IntField'>
>>> a.some_behavior()
>>> a = 23
>>> print a.bytecode
[0, 0, 0, 17]
>>> print type(a)
<class '__main__.IntField'>
我知道这是可以做到的,因为我已经看到了这个概念的实现。但他们会降到 C 级来实现它。有没有更简单的纯 python 方式来做到这一点?我怎样才能做到这一点?