序列的修改、散列、切片

Vector

from array import array
import reprlib
import math

class Vector:
    typecode = 'd'
    
    def __init__(self, components):
        self._components = array(self.typecode, components)
        
    def __iter__(self):
        return iter(self._components)
        
    def __repr__(self):
        components = reprlib.repr(self._components)
        components = components[components.find('['):-1]
        return 'Vector({})'.format(components)
        
    def __str__(self):
        return str(tuple(self._components))
        
    def __bytes__(self):
        return bytes([ord(self.typecode)]) + bytes(self._components)
        
    def __eq__(self, other):
        return tuple(self) == tuple(other)
        
    def __abs__(self):
        return math.sqrt(sum(x * x for x in self))
        
    def __bool__(self):
        return bool(abs(self))
        
    @classmethod
    def frombytes(cls, octets):
        typecode = chr(octets[0])
        memv = memoryview(octets[1:]).cast(typecode)
        return cls(memv)
测试

reprlib 作用
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容