Будучи новым для python, я просто наткнулся на ключевое слово property
, которое в основном позволяет назначать геттеры и сеттеры. Я придумал этот простой примерPython - свойство Getter как лямбда с параметром
class foo:
def __init__(self,var=2):
self.var= var
def setValue(self,var):
print("Setting value called")
self._var = var
def getValue(self):
print("getting value")
var = property(getValue,setValue)
Сейчас в моем Джанго проекте я наткнулся на что-то вроде этого (с помощью лямбда в свойстве)
class UserProfile(models.Model):
user = models.OneToOneField(User)
likes_cheese = models.BooleanField(default=True)
puppy_name = models.CharField(max_length=20)
User.profile = property(lambda u : UserProfile.objects.get_or_create(user=u)[0])
Я понятия не имел, что вы могли бы использовать лямбда внутри собственности. Теперь я понимаю, что он устанавливает геттер profile
как лямбда, а геттер требует параметр. Меня это смутило. Поэтому я решил попробовать свой собственный пример
class double:
def setValue(self,var):
print("Setting value called")
self._var = var
def getValue(self):
print("getting value")
#var = property(getValue,setValue)
var = property(lambda x: print("The value of parameter is" + str(x)))
d =double()
d.var #Call the getter but how do i pass a value parameter to it ?
Теперь, в моем случае, как я могу передать параметр лямбда?
Значение первого параметра - 'self' .. – thebjorn
Можете ли вы это объяснить. Я все еще немного смущен –
Я добавил объяснение в качестве ответа. – thebjorn