Определите атрибут класса в соответствии с именем объекта

#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