Размер байта не увеличивается в динамическом массиве c в Python - PullRequest
0 голосов
/ 28 апреля 2020
import ctypes
import sys

class DynamicArray(object):
    def __init__(self):
        self.n = 
        self.capacity = 1 
        self.A = self.make_array(self.capacity)

    def __len__(self):
        return self.n

    def __getitem__(self,k):
        if not 0 <= k <self.n:
            return IndexError('K is out of bounds!')

        return self.A[k] 

    def append(self, ele):
        if self.n == self.capacity:
            self._resize(2*self.capacity) 

        self.A[self.n] = ele 
        self.n += 1

    def _resize(self,new_cap):
        B = self.make_array(new_cap)

        for k in range(self.n):
            B[k] = self.A[k]

        self.A = B 
        self.capacity = new_cap 

    def make_array(self,new_cap):
        return (new_cap * ctypes.py_object)()

Когда я использую

arr = DynamicArray()

и после вставки от 10 до 20 чисел размер байта остается прежним.

Вот как я проверяю размер массива:

sys.getsizeof(arr)

Размер байта равен 56.

...