Проблема в том, что items на самом деле является методом ObjectifiedElement , поэтому выражение sale.items фактически возвращает метод, потому что он имеет приоритет.
Чтобы получить требуемый объект 'items', вы должны быть более явными в получении атрибута sale и не искать сначала методы класса, что является обычным порядком Python.Это то, что python делает за сценой, когда вы получаете доступ к атрибуту, и вы можете сделать это тоже:
sale.__getattr__('items')
Это также будет работать (это словарь-интерфейс для атрибутов объекта):
sale.__dict__['items']
Пересмотренный код:
import requests
from lxml import objectify
url = "URL_TO_XML_FILE"
xml_content = requests.get(url).text.encode('utf-8')
xml = objectify.fromstring(xml_content)
for sale in xml.response.sales.sale:
for item in sale.__dict__['items'].item:
print(item.sku)