Не работает дочерний класс

Марк

Новичок
Пользователь
Апр 26, 2020
5
0
1
операционная система Windows 10
версия Python 3,7

Создать класс, представляющий число на основе его символьного записи и основы системы
счисления (2, 8, 10 или 16). Отображение экземпляру класса на экран подать в формате
"Число_основа". Реализовать метод определения записи числа в десятичной системы счисления.
Перезагрузить оператор "+" так, чтобы он возвращал десятичная запись конкатенации двух
чисел.
Создать дочерний класс, содержащий информацию о числе и его парность.

Проблема в дочернем классе. Я пробовал исправить возможно даже искалечил код но ничего не получилось.
Помогите пожалуста понять в чем проблема и как ее исправить

Python:
class NumberA():
  def __init__(self, num, bas):
    self.num = num
    self.bas = bas
 
  def print_data(self):
    print(f'{self.num}_{self.bas}')
    print(f'{str(int(self.num, self.bas))}')

  def __add__(self, other):
    print(f'{self.num}{other.num}_{self.bas}')
    print(f'{str(int(self.num + other.num, self.bas))}')

class NumberInfo(NumberA):
  def __init__(self, num, bas, parity):
        super().__init__(num, bas)
        self.parity = parity
      
  def parity(self):
        if self.num%2 == 0:
            print('Number is prime')
        else :
            print("Number is not prime ")

  def str(self):
        return f'{self.parity}'


binar = NumberA('110',2)
print(binar.print_data(), "parity")


octal = NumberA('21',8)
print(octal.print_data(), "self.num")

decimal = NumberA('69',10)
print(decimal.print_data(), "number_info")

hexl = NumberA('4A6',16)

print(hexl.print_data(), "parity")

n1 = NumberA('110',2)
n2 = NumberA('11', 2)
n3 = n1 + n2
print(n3, "number_info")

n4 = NumberA('21', 8)
n5 = NumberA('2', 8)
n6 = n4 + n5
print(n6, "number_info")

n7 = NumberA('69', 10)
n8 = NumberA('25', 10)
n9 = n7 + n8
print(n9, "number_info")

n10 = NumberA('4A6', 16)
n11 = NumberA('1F1', 16)
n12 = n10 + n11
print(n12, "parity")
 
Последнее редактирование модератором:

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Вот пример:
Python:
class NumberA():
    def __init__(self, num, bas):
        self.num = num
        self.bas = bas
        self.decimal = int(self.num, self.bas)

    def __str__(self):
        return f'{self.num}_{self.bas}'

    def print_decimal(self):
        print(self.decimal)

    def __add__(self, other):
        print(f'{self.num}{other.num}_{self.bas}')
        print(f'{str(int(self.num + other.num, self.bas))}')


class NumberInfo(NumberA):
    def __init__(self, num, bas):
        super().__init__(num, bas)

    def parity(self):
        if self.decimal % 2 == 0:
            print('Number is prime')
        else:
            print("Number is not prime ")
            
            
binar = NumberInfo('110', 2)
print(binar)
binar.print_decimal()
binar.parity()

octal = NumberInfo('21', 8)
print(octal)
octal.print_decimal()
octal.parity()

decimal = NumberInfo('69', 10)
print(decimal)
decimal.print_decimal()
decimal.parity()

hexl = NumberInfo('4A6', 16)
print(hexl)
hexl.print_decimal()
hexl.parity()
 
  • Мне нравится
Реакции: Student и Марк

Форум IT Специалистов