Методы типа можно увидеть, если выполнить команду dir([type]). В качестве аргумента можно указать тип (например, str, list и др.), переменную, передать данные непостредственно (число, строку и др.).
>>> dir(dict)
['__class__', '__contains__', '__delattr__', '__delitem__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
Бывает желательно выделить из списка методы без подчеркиваний и вывести их в удобочитаемом виде, например, по строке на каждую букву алфавита.
def type_methods(arg): # аргументом может быть переменная, тип или данные
source_list = dir(arg)
methods = []
count = 0
for m in source_list:
if m[0:2] != '__':
count += 1
if not ('temp' in locals()):
temp = []
temp.append(m)
continue
if temp[-1][0] == m[0]:
temp.append(m)
else:
methods.append(temp)
temp = []
temp.append(m)
print(count)
for i in methods:
print(i)
Описание алгоритма кода:
- source_list содержит исходный список методов, список methods будет содержать вложенные списки, каждый из которых будет содержать только методы на одну букву алфавита. count для вывода общего количества методов.
- Проверка метода на наличие подчеркиваний.
- Если переменной temp не существует, то она создается. В temp хранится список методов на одну букву алфавита.
- Первая буква очередного метода сравнивается с первой буквой последнего метода в temp. Если они совпадают, то temp продолжает заполняться.
- Иначе содержимое temp сбрасывается в methods, ей снова присваевается пустой список и в него добавляется текущий метод из source_list.
Пример использования функции:
>>> import methods
>>> methods.type_methods(str)
43
['capitalize', 'center', 'count']
['encode', 'endswith', 'expandtabs']
['find', 'format', 'format_map']
['index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper']
['join']
['ljust', 'lower', 'lstrip']
['maketrans']
['partition']
['replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip']
['split', 'splitlines', 'startswith', 'strip', 'swapcase']
['title', 'translate']
['upper']
>>> methods.type_methods([])
9
['append']
['count']
['extend']
['index', 'insert']
['pop']
['remove', 'reverse']
>>> methods.type_methods(int)
8
['bit_length']
['conjugate']
['denominator']
['from_bytes']
['imag']
['numerator']
['real']