0

我正在开发一个从卡中读取字节码的智能卡应用程序。

我想要一个<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 方式来做到这一点?我怎样才能做到这一点?

4

0 回答 0