Как выполнить несколько методов одним разом python?
пара способовЦЕПОЧКА ВЫЗОВОВВ коде вы привели пример, как хотели бы использовать: caller.hello().world()
Если хотите, чтобы последний метод возвращал результат, то можно так:class Hello(object):
    def __init__(self):
         self.msg = 'Hello'

    def hello(self, world):
        self.msg = self.msg + ', ' + world
        return self

    def print(self):
        return self.msg

caller = Hello()
msg = caller.hello('niriter').print()
print(msg) # Hello, niriter
Такого рода код используется в разного рода билдерах, когда нужно настроить обьект разным способом по разным условиям (разного рода билдеры, в ОРМ запрос собрать и прочее)
В вашей библиотеке по работе с html такой способ и используется (наряду со вторым)  — вызываете разного рода методы, а возвращает все тот же обьект с разным состоянием и вы всегда можете вызвать новый метод (удалить элемент, добавить, все стереть) и по итогу вызвать получение своего нужного HTMLИНКАПСУЛЯЦИЯclass Hello(object):
    def __init__(self, msg='Friend'):
         self.msg = msg

    def print(self):
        init_msg = self.hello()
        return init_msg + ',  ' + self.msg
    
    def hello(self): # этот метод вызываем изнутри другого метода
        return str("Hello")

caller1 = Hello()
print(caller1.print()) # Hello, Friend

caller2 = Hello('Maks')
print(caller2.print()) # Hello, Maks
Инкапсуляция из мира ООП, наружу предоставляет некий метод, и вызвав его  — выполнится некоторое поведение и изменение состояния. Нужна для сокрытия всех деталей и нюансов и оставляет только удобное АПИ для работы.
В вашей библиотеке по работе с html такой способ и используется (наряду с первым)  — прячет сложные алгоритмы извлечения элементов, манипуляции с ними, отдавая назад только удобное АПИ с понятными названиями
модуль threading смотри