#python #object #attributes
Вопрос:
Я бы хотел, чтобы атрибут определялся автоматически, как только объекту присваивается его класс:
class someClass:
def __init__(self, abbreviation):
the first three letters of the object name = abbreviation
hello = someClass()
print(hello.abbreviation)
# expected output
hel
Я уверен, что этот вопрос уже задавался (поэтому, пожалуйста, не стесняйтесь перенаправлять меня), но я все еще новичок в этом, поэтому не уверен, что искать.
Заранее спасибо!
Комментарии:
1. Почему? На самом деле это не очень хорошая идея. Вы не должны хранить информацию в имени переменной, почему бы не передать ее в качестве параметра ?
someClass("hel")
?2. Я не понимаю, как это позволяет хранить информацию в имени переменной. Он наследует имя от переменной и сохраняет его внутри атрибута. Кроме того, мне нужно уметь манипулировать атрибутом по-разному, например, верхним() или систематически добавлять дополнительный int в конце.
3. Поскольку информация поступает из имени переменной, то есть информация о временном хранении в имени переменной, это не очень хорошая практика. Почему бы не пройти мимо
someClass("hel")
? тогда в init вы можете обойтисьself.abbreviation = abbreviation.upper() "9"
без проблем4. О, вы можете вызывать методы при определении! Что ж, это полностью решает мою проблему. Спасибо! 😀
5. Вероятно, стоит прочитать: nedbatchelder.com/text/names.html
Ответ №1:
class MyClass:
def __init__(self, attr):
self.attr = attr[:3]
myObject = MyClass("hello")
print(myObject.attr) # hel