Публичная строка blaBla { get; задавать; } в питоне
Рассмотрим следующий пример, чтобы лучше понять мой вопрос:
public class ClassName
{
public ClassName { }
public string Val { get; set; }
...
}
ClassName cn = new ClassName();
cn.Val = "Hi Stackru!!";
Что будет эквивалентом этого кода в Python?
3 ответа
Решение
Вы можете легко добавить членов к любому объекту Python, как показано в других ответах. Для более сложных методов get/set, как в C#, смотрите встроенное свойство:
class Foo(object):
def __init__(self):
self._x = 0
def _get_x(self):
return self._x
def _set_x(self, x):
self._x = x
def _del_x(self):
del self._x
x = property(_get_x, _set_x, _del_x, "the x property")
В Python нет геттеров и сеттеров в этом смысле. Следующий код эквивалентен приведенному выше коду:
class ClassName:
pass
cn = ClassName()
cn.val = "Hi Stackru!!"
Обратите внимание, что в python нет упоминаний о методах получения / установки; вам даже не нужно объявлять val
пока вы не установите его. Для создания пользовательских методов получения / установки вы можете сделать, например, это:
class ClassName:
_val = "" # members preceded with an underscore are considered private, although this isn't enforced by the interpreter
def set_val(self, new_val):
self._val = new_val
def get_val(self):
return self._val
class a:
pass //you need not to declare val
x=a();
x.val="hi all";