Это так называемые методы экземпляра, поскольку они работают с экземплярами класса, в этом случае "Some random string"
является экземпляром класса str
, а метод upper()
напрямую работает с самим этим экземпляром.
Хороший способ различить их - спросить себя, нужна ли методу информация о конкретном случае?Например, upper()
нужно ли знать о тексте в конкретном экземпляре строки, чтобы выполнять свою работу?
Для сравнения, методы класса не работают с конкретным экземпляром класса.Например, https://docs.python.org/3.7/library/stdtypes.html#int.from_bytes
Возвращает целое число, представленное данным массивом байтов.
>>> int.from_bytes(b'\x00\x10', byteorder='big')
16
>>> int.from_bytes(b'\x00\x10', byteorder='little')
4096
>>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=True)
-1024
>>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=False)
64512
>>> int.from_bytes([255, 0, 0], byteorder='big')
16711680
В этом случае метод from_bytes
не требуетсяинформация о любом конкретном экземпляре класса int, поскольку именно он создает экземпляр.