Как называются функции / методы variable.methodName ()? - PullRequest
0 голосов
/ 09 декабря 2018

Очень простой вопрос: как называются эти типы методов / функций?

"Some random string".upper()
"A string in python".lower()
"A formatted string {}".format("in Python")

Я действительно пытался найти все, что мог, и как я мог их сделать, но, насколько я знаю, они 'Мы называем его «методы класса», который так же широк, как и небоЯ спросил своего учителя CS, но даже у него не было реального ответа для меня.

Ответы [ 2 ]

0 голосов
/ 09 декабря 2018

Это так называемые методы экземпляра, поскольку они работают с экземплярами класса, в этом случае "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, поскольку именно он создает экземпляр.

0 голосов
/ 09 декабря 2018

Все они builtin_function_or_method:

>>> type('ABC'.lower)
<class 'builtin_function_or_method'>
>>> 

, но есть и более похожие методы строки, хотя

И это method_descriptor:

>>> type(str.lower)
<class 'method_descriptor'>
>>> 

Использованиеtype чтобы сделать это.

...