Печатать символы апострофа внутри функции python3 format ()

Помогите мне решить проблемы с выходным предложением, содержащим символ апострофа со стандартной функцией format (). Я беру пример из главы 31 «Изучение Python, пятое издание» Марка Латца 2013 с функцией, экземпляром, методом и экземпляром с перегрузкой печати - см. Код и их выход ниже. Информация для интерпретатора - Python 3.7.3 (по умолчанию, 25 июля 2020 г., 13:03:44) [GCC 8.3.0] для linux. Пример кода и вывода с функциями format () и print ():

def square(arg):                        # Simple functions     def or lambda
    return arg ** 2

class Sum:                             # Calliable instance
    def __init__(self, val):
        self.val = val
    def __call__(self, arg):
        return self.val + arg
    
class Product:                        # Bound method 
    def __init__(self, val):
        self.val = val
    def method(self, arg):
        return self.val * arg
    
class Negate:                       
    def __init__(self, val):          # Operator print overloading
        self.val = -val
    def __repr__(self):
        return str(self.val)
    
    
if __name__ == '__main__':
    Sobject = Sum(2)
    pobject = Product(3)
    actions = [square, Sobject, pobject.method, Negate]     # function, instance, method, instance with print() overloading
    table = {act(5): act for act in actions}                # Dictionary comprhension
    for (key, value) in table.items():                      # Printing with format
        print('{0:2} => {1}'.format(key, value)) 
    output print correct first three rows and  raise exceptions when trying print fourth row which contains mean  (-5, <class '__main__.Negate'>) with apostrophe ' symbol
    25 => <function square at 0x7fdba0d64840>
    7 => <__main__.Sum object at 0x7fdba00a8d30>
    15 => <bound method Product.method of <__main__.Product object at 0x7fdba00a8d68>>
    Traceback (most recent call last): TypeError: unsupported format string passed to Negate.__format__
    
    print(table)                                        # using standard print() function
    output is correct without any errors, see bellow:
    dict_items(
    [(25, <function square at 0x7fdba0088d90>), 
    (7, <__main__.Sum object at 0x7fdba00215c0>), 
    (15, <bound method Product.method of <__main__.Product object at 0x7fdba0021390>>),
    (-5, <class '__main__.Negate'>)])

Я знаю, как напечатать апостроф «внутри стандартной функции print () - добавить escape-символ», чтобы добавить апостроф в строку, заключенную в одинарные кавычки, или заменить одинарные кавычки на двойные кавычки:

print('I'm studying Python') → I'm studing Python
or
print("I'm studying Python") -> I'm studying Python

Как решить эту проблему с символом апострофа внутри функции format ()?

Всего 1 ответ

Автоматический диспенсер мыльной пены от xiaomi.


Пранаву Хосангади Пример взят из главы 31: «Проектирование с использованием классов». страницы 952 - 953 - класс Negate имеет только конструктор с def init (self, val) и перегрузку print () с def repr (self): и не имеет дополнительных перегрузка для формата и других встроенных методов для объектов, описанных в этом примере. Этот пример в книге имеет правильный вывод -5 = > < class ' main .Negate' > на странице 953


Есть идеи?

10000