Форум сайта python.su
16
Подскажите плиз, можно ли в питоне создавать класс, где переменная и функция имеют одно и тоже имя ? К примеру код:
class Example: completed = False def is_completed(self): if self.completed is False: return 'Not completed' else: return 'Completed' def completed(self): self.completed = True def status(self): return self.completed example = Example() print "Request 1: %s " % example.completed example.completed() print "Request 2: %s " % example.completed print "Request 3: %s " % example.is_completed()
Request 1: <bound method Example.completed of <__main__.Example instance at 0x7f64e5f82248>> Request 2: True Request 3: Completed
Офлайн
75
VadimK
class completed_class(): def __call__(self, *args, **kwargs): print args, kwargs return "call" def __repr__(self): return "repr" def __str__(self): return "str"
Отредактировано Singularity (Фев. 11, 2014 02:49:17)
Офлайн
19
При первом обращении к переменной ругается, а если эту переменную изменить в функции, то уже ошибки нет.Ниче он не ругается а грит вам о то что вы обратились к методу

Вызывает метод completed, в котором идет присвоение,что self.completed теперь не метод, а значение True. Ну и последняя строка это и выводит.example.completed()
Подскажите плиз, можно ли в питоне создавать класс, где переменная и функция имеют одно и тоже имя ?Нельзя.
Отредактировано PanovSergey (Фев. 11, 2014 11:50:38)
Офлайн
75
PanovSergeyдескрипторы ?
Нельзя
Офлайн
19
дескрипторы ?Не думаю что ТС это имеет виду, да и под условие вроде как не подходит. Дескриптор не даст одновременно обращаться как к переменной так и к методу.
class A(object): x = 123 @property def x(self): return 1234 a = A() print a.x
Отредактировано PanovSergey (Фев. 11, 2014 13:07:04)
Офлайн
16
Вызывает метод completed, в котором идет присвоение,что self.completed теперь не метод, а значение True. Ну и последняя строка это и выводит.Ясно, спасибо.
Офлайн