Creating Vectors with Python

2019-09-19 19:20发布

问题:

I'm creating a vector class that has one parameter being the length of a vector. The length is automatically 0 if none is entered by user. If a vector is given a length, however, each number will be set to 0. For example: v(5) would be [0,0,0,0,0] and v() would be []. This is the code i have thus far, but it's not quite working. Any advice?

class V:

    def __init__(self, length = 0):
        self.vector = [0]*length
    def __str__(self):
        print(self.vector)
    def __len__(self):
        return len(self.vector)

Then i plug in a = V() b = V(5) and when i print(a) and print(b) i get an TypeError. Any advice?

回答1:

I'd probably cheat and go for sub-classing list:

class V(list):
    def __init__(self, length=0):
        super(V, self).__init__([0] * length)

This way you get the length, repr and other goodies for free.



回答2:

class V:
    def __init__(self, length = 0):
        self.data = [0]*length

    def __str__(self):
        return '[{}]'.format(', '.join(str(d) for d in self.data))

    def __len__(self):
        return len(self.data)


标签: python class