Может ли оператор формата строки Python быть применен к классу? - PullRequest
0 голосов
/ 27 января 2019

Мне было интересно, можно ли применить оператор форматирования строки '%' к классу с подклассами в python, как показано ниже:

"I'm %(foo.name)s!" % class

Я знаю, что его можно применить ксловарь, но, насколько мне известно, он не может получить доступ к значениям в многомерных словарях.

1 Ответ

0 голосов
/ 27 января 2019

Вы не можете сделать % class, но это не должно быть хлопотно, потому что вы обычно хотите напечатать экземпляр класса.Вы можете делать то, что вы хотите с экземпляром класса.Учитывая этот класс:

class Foo():
    def __init__(self, name, id):
        self.name = name
        self.id = id

вы можете сделать

>>> foo = Foo("Bar",1)
>>> f"I'm a {foo.name}"
"I'm a Bar"

или, если вы еще не используете Python 3.7

>>> "I'm a {.name}".format(foo)
"I'm a Bar"

и если вы действительно хотитеиспользовать оператор %

>>> "I'm a %(name)s" % vars(foo)
"I'm a Bar"
...