Как построить экземпляр без имени класса? - PullRequest
0 голосов
/ 07 апреля 2020

Я хочу создать экземпляр класса Matrix без использования имени класса, потому что я хочу, чтобы он работал также, если изменит его. я попытался заменить Matrix() в строке 2 на {self.__class__.__name__}, но это не сработало. идеи?

class Matrix:
"""A matrices calculator for basic math actions
    Attributes:
        data(tuple of tuples): a Matrix- each line is a tuple in the major tuple """

def __init__(self, data):
    if type(data) is not tuple:
        raise ValueError("Invalid matrix")
    for tup in data:
        if len(tup) != len(data) or type(tup) is not tuple:
            raise ValueError("Invalid matrix")
    self.data = data


@staticmethod
def unity(size):
    """ unity method creates a matrix of zeros with a diagonal of ones
    args: size(int)- the size of the matrix and lines.
    returns: a matrix full of 0 and 1's diagonal
    exceptions: ValueError for non-ints"""
    if type(size) is int:
        major_list = [[1 if i == index else 0 for i in range(size)] for index in range(size)]
        sub_list = [tuple(lt) for lt in major_list]
        # converts list of lists to type Matrix. lt are the inside lists
        matrix_to_return = Matrix((tuple(sub_list)))
        return matrix_to_return
    else:
        raise ValueError("size must be an integer")

1 Ответ

0 голосов
/ 07 апреля 2020

Не возможно. Экземпляр создается из его имени класса, потому что это то, что является экземпляром. Объект класса. Как вы думаете, вы можете получить доступ к классу и создать его экземпляр, не используя имя класса для его вызова?

Если вы измените имя класса, вам придется изменить его для каждого места, где вы его вызываете, чтобы сделать экземпляр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...