Здесь есть две вещи:
1. class attributes and instance attributes
2. difference between the operators + and += for lists
+
оператор вызывает метод __add__
в списке. Он берет все элементы из своих операндов и создает новый список, содержащий эти элементы, поддерживающие их порядок.
+=
оператор вызывает метод __iadd__
в списке. Он требует итерации и добавляет все элементы итерабельности в список на месте. Он не создает новый объект списка.
В классе foo
оператор self.bar += [x]
не является оператором присваивания, но фактически переводит на
self.bar.__iadd__([x]) # modifies the class attribute
, который изменяет список на месте и действует как метод списка extend
.
В классе foo2
, наоборот, оператор присваивания в методе init
self.bar = self.bar + [x]
может быть деконструирован как: экземпляр не имеет атрибута bar
(есть атрибут класса с тем же именем), поэтому он обращается к атрибуту class bar
и создает новый список, добавляя к нему x
. Оператор преобразуется в:
self.bar = self.bar.__add__([x]) # bar on the lhs is the class attribute
Затем он создает атрибут экземпляра bar
и присваивает ему вновь созданный список. Обратите внимание, что bar
на rhs присваивания отличается от bar
на lhs.
Для экземпляров класса foo
, bar
является атрибутом класса, а не атрибутом экземпляра. Следовательно, любое изменение атрибута class bar
будет отражено для всех экземпляров.
Напротив, каждый экземпляр класса foo2
имеет свой собственный атрибут экземпляра bar
, который отличается от атрибута класса с тем же именем bar
.
f = foo2(4)
print f.bar # accessing the instance attribute. prints [4]
print f.__class__.bar # accessing the class attribute. prints []
Надеюсь, это очистит.
Можно создать экземпляр с ускорителями и контейнер с gcloud
, создав экземпляр с помощью ускорителей, а затем используя gcloud beta compute instances update-container
, чтобы установить контейнер, но в настоящее время невозможно создать шаблон экземпляра с ускорителями и контейнер с gcloud
.
Вы можете запросить функцию для этой функции: https://issuetracker.google.com/issues/new?component = 187143 & амп; шаблон = 0