Настройка dict в конструкторе (python) - PullRequest
0 голосов
/ 03 марта 2011

Эй, я новичок в Python, и я пытаюсь настроить dict в конструкторе класса, но когда я пытаюсь получить доступ к элементу, он возвращает None.Вот мой код

class GoogleApp:

  def __init__(self, path):
    self.name = "Google App"
    self.description = "Creates an new google app project."
    self.title = None
    self.path = path
    self.pre_defined_macros = {
      '_NAME': self.name , 
      '_DESCRIPTION': self.description,
      '_TITLE': "Shoutout",
      '_BASE_PATH': self.path,
      '_PATH': lambda: os.path.join(self.path, self.title)
    }

Теперь, когда я пытаюсь получить доступ к self.pre_defined_macros ['_ TITLE'] из другого метода, он возвращает None.

Ответы [ 2 ]

1 голос
/ 03 марта 2011

Можете ли вы опубликовать пример кода?

Я спрашиваю это, потому что я не уверен, что вы пытаетесь сделать. <instance>.pre_defined_macros['_TITLE'] работал нормально, когда я тестировал его.

>>> class GoogleApp:

  def __init__(self, path):
    self.name = "Google App"
    self.description = "Creates an new google app project."
    self.title = None
    self.path = path
    self.pre_defined_macros = {
      '_NAME': self.name , 
      '_DESCRIPTION': self.description,
      '_TITLE': "Shoutout",
      '_BASE_PATH': self.path,
      '_PATH': lambda: os.path.join(self.path, self.title)
    }


>>> f  = GoogleApp('foo')
>>> f.pre_defined_macros['_TITLE']
'Shoutout'
>>> 

Я также пытался получить доступ к pre_defined_macros другим способом. Вот так:

>>> class GoogleApp:
    def __init__(self, path):
        # Your original code here.
    def get_title(self):
        return self.pre_defined_macros['_TITLE']


>>> f  = GoogleApp('foo')
>>> f.get_title()
'Shoutout'
>>> 
0 голосов
/ 03 марта 2011

Ааа ... Понятно!

На самом деле я установил

self.title = None

Так при создании словаря

'_TITLE': self.title

Нет значения для _TITLE

Недостаток концентрации !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...