Python - Создание класса для чисел, который принимает целые числа, кортежи, наборы или списки. Как создать метод __init__ - PullRequest
1 голос
/ 22 марта 2020

Я хочу создать класс для чисел, который принимает целые числа, кортежи, наборы или списки. Я пытался использовать мало знаний о oop в python, и это то, что я мог придумать как __init__ метод. Но я не думаю, что это так, как это должно быть написано. Также я не могу перебирать свои объекты, и когда я печатаю объект, я просто получаю идентификатор объекта. Должен ли я написать другой метод, чтобы иметь возможность распечатать его?

class Numbers():
    def __init__(self, num):
        assert isinstance(num, int) or isinstance(num, list) or isinstance(num, set) or isinstance(num, tuple), 'invalid numbers'
        if isinstance(num, int):
            self.num = int(num)
        elif isinstance(num, list):
            self.num = list(num)
        elif isinstance(num, tuple):
            self.num = tuple(num)
        elif isinstance(num, set):
            self.num = set(num)
>>>b = Numbers([1,2,3,4,5])
>>>b 
<__main__.Numbers object at 0x000001DF24F25250>

1 Ответ

1 голос
/ 22 марта 2020

Вам просто нужно определить метод __repr__.

Вы также можете проверить это.
Разница между __str__ и __repr __?

class Numbers():
    def __init__(self, num):
        assert isinstance(num, int) or isinstance(num, list) or isinstance(num, set) or isinstance(num, tuple), 'invalid numbers'
        if isinstance(num, int):
            self.num = int(num)
        elif isinstance(num, list):
            self.num = list(num)
        elif isinstance(num, tuple):
            self.num = tuple(num)
        elif isinstance(num, set):
            self.num = set(num)

    def __repr__(self):
        return self.num.__repr__()


b = Numbers([1,2,3,4,5])

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