Вы можете отправить запрос, когда ваши изображения закончат сборку в Docker Hub, через Docker Hub Webhooks .
Вы можете использовать веб-зацепки, чтобы вызвать действие в другом сервисе в ответ на push-событие в хранилище. Webhooks - это запросы POST, отправленные на URL, который вы определили в Docker Hub.
blockquote>Вы можете запустить конвейер битового сегмента, используя запрос POST через URL-адрес
https://api.bitbucket.org/2.0/repositories/{username}/{repo_slug}/pipelines/
. Вы можете проверить документацию для получения дополнительной информации.
В дополнение к этим ответам я буду включать функцию (python 3) для того, чтобы извергнуть фактически всю структуру любого значения. Это использует dir
для составления полного списка имен свойства, затем использует getattr
с каждым именем. Это отображает тип каждого члена значения, и, когда возможно также отображает всего участника:
import json
def get_info(obj):
type_name = type(obj).__name__
print('Value is of type {}!'.format(type_name))
prop_names = dir(obj)
for prop_name in prop_names:
prop_val = getattr(obj, prop_name)
prop_val_type_name = type(prop_val).__name__
print('{} has property "{}" of type "{}"'.format(type_name, prop_name, prop_val_type_name))
try:
val_as_str = json.dumps([ prop_val ], indent=2)[1:-1]
print(' Here\'s the {} value: {}'.format(prop_name, val_as_str))
except:
pass
Теперь любое следующее должно дать понимание:
get_info(None)
get_info('hello')
import numpy
get_info(numpy)
# ... etc.
>>> ', '.join(i for i in dir(a) if not i.startswith('__'))
'multi, str'
Это, конечно, напечатает любые методы или атрибуты в определении класса. Вы можете исключить «частные» методы, изменив i.startwith ('__')
на i.startwith ('_')
>>> class new_class():
... def __init__(self, number):
... self.multi = int(number) * 2
... self.str = str(number)
...
>>> a = new_class(2)
>>> a.__dict__
{'multi': 4, 'str': '2'}
>>> a.__dict__.keys()
dict_keys(['multi', 'str'])
Вы также можете найти pprint полезным.
Для чего вам это нужно? Трудно дать вам лучший ответ, не зная ваших точных намерений.
Почти всегда лучше сделать это вручную, если вы хотите отобразить экземпляр вашего класса определенным образом. Это позволит включить именно то, что вы хотите, и не включать то, что вы не хотите, а порядок будет предсказуемым.
Если вы ищете способ отобразить содержимое класса, вручную отформатируйте атрибуты, которые вас интересуют, и предоставьте это как метод __str__
или __repr__
для вашего класса.
Если вы хотите узнать, какие методы и т.п. существуют для объекта, чтобы понять, как он работает, используйте help
. help(a)
покажет вам форматированный вывод о классе объекта на основе его docstrings.
dir
существует для программного получения всех атрибутов объекта. (Доступ к __dict__
делает то, что я бы сгруппировал как то же самое, но не стал бы использовать сам). Однако это может не включать то, что вам нужно, и может включать то, что вам не нужно. Это ненадежно, и люди думают, что им это нужно, гораздо чаще, чем на самом деле.
На несколько ортогональной ноте, в настоящее время поддержка Python 3 очень слаба. Если вы заинтересованы в написании реального программного обеспечения, вам понадобятся такие сторонние вещи, как numpy, lxml, Twisted, PIL или любое количество веб-фреймворков, которые пока не поддерживают Python 3 и не планируют поддерживать в ближайшее время. Различия между 2.6 и веткой 3.x невелики, но разница в поддержке библиотек огромна.
dir(instance)
# or (same value)
instance.__dir__()
# or
instance.__dict__
Затем вы можете проверить, какой тип - с помощью type ()
или является ли метод с callable ()
.