#python #properties
#python #свойства
Вопрос:
Это основной вопрос Python. Давным-давно я видел что-то подобное, и я считаю, что это было в Python. Возможно ли это, или я ошибаюсь?
Я прошу способ сделать это; приведенный ниже пример — это просто воображаемый код того, как он мог бы работать, но не работает.
class SomeClass:
def someMethod(self):
return self.name ' ' self.id
name = 'A name'
id = '37'
fullClassName = someMethod # reading this attribute would actually call the method
>>> a = SomeClass()
>>> print a.fullClassName # no parentheses as it's not a method call
A name 37
Комментарии:
1. Возможно ли , что произошло, когда вы попробовали это?
2. Почему вы просто не попробовали это? Функции — это тоже просто объекты, поэтому вы можете добавить другое имя, которое является псевдонимом, да.
3. Я пробовал так, но, конечно, это не сработало, я спрашиваю, есть ли правильный способ сделать это или это вообще невозможно. Не опускайте голос, если вы не получили вопрос.
4. Когда он вызывается,
a = SomeClass() a.fullClassName
он возвращает<bound method SomeClass.someMethod of <__main__.SomeClass instance at 0x7fd30ea9afc8>>
. Я хочу, чтобы скобки не вызывались как метод, а как атрибут.5. Я думаю, вам нужно «свойство».
Ответ №1:
Вы ищете свойство.
>>> class SomeClass:
... name = 'A name'
... id = '37'
...
... @property
... def someMethod(self):
... return self.name ' ' self.id
...
... fullClassName = someMethod
...
>>> a = SomeClass()
>>> print a.fullClassName
A name 37
>>>
или просто
>>> class SomeClass:
... name = 'A name'
... id = '37'
...
... @property
... def fullClassName(self):
... return self.name ' ' self.id
...
>>> a = SomeClass()
>>> print a.fullClassName
A name 37
>>>
Комментарии:
1. Большое вам спасибо! Я не знал об этом, я подробнее прочитаю о свойствах. Всегда полезно спрашивать и учиться, даже если я проголосую.