То, что вы видите, это "аргументы ключевых слов". Вы можете вызвать конструктор со словарем или именованными аргументами. Вот пример использования ключевых аргументов:
class MyClass(object):
def __init__(self,**kwargs):
if 'val' in kwargs:
self.__value = kwargs['val'];
elif 'value' in kwargs:
self.__value = kwargs['value'];
else:
raise ValueError("Requires parameter 'val' or 'value'.");
def getValue(self):
return self.__value;
# ...
def main(argv=None):
# ...
instance1 = MyClass(val=5);
x = instance1.getValue(); # value is 5
instance2 = MyClass(value=6);
y = instance2.getValue(); # value is 6
valuedict = {'val':10};
instance3 = MyClass(**valuedict);
z = instance3.getValue(); # value is 10
Аргументы ключевых слов хороши тем, что они могут сделать ваши функции и конструкторы очень гибкими, и - как видно из последнего случая создания экземпляра - становится возможным построить объект из словаря конфигурации. Основным недостатком аргументов ключевого слова является то, что, поскольку он настолько гибок, может быть неочевидным, какие есть варианты. Вы можете попробовать выполнить «pydoc pyvb.vm» или, как уже было сказано, вы можете взглянуть на исходный код , который показывает поддерживаемые атрибуты.