Скрипт вывода методов типа на Python

Методы типа можно увидеть, если выполнить команду 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)

Описание алгоритма кода:

  1. source_list содержит исходный список методов, список methods будет содержать вложенные списки, каждый из которых будет содержать только методы на одну букву алфавита. count для вывода общего количества методов.
  2. Проверка метода на наличие подчеркиваний.
  3. Если переменной temp не существует, то она создается. В temp хранится список методов на одну букву алфавита.
  4. Первая буква очередного метода сравнивается с первой буквой последнего метода в temp. Если они совпадают, то temp продолжает заполняться.
  5. Иначе содержимое 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']

  Python: Математические функции для эффективной работы с числами
Оцените статью
( Пока оценок нет )
Поделиться с друзьями
Python для начинающих
Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x