2012-05-02 3 views
1

У меня есть модуль python, который я создал, который содержит регулярные функции, а также классы. По какой-то причине, когда я вызываю конструктор и передаю значение, он не обновляет переменную класса.Объявление классов внутри модуля python

Мой модуль называется VODControl (VODControl.py). Класс, который я объявил внутри модуля, называется DRMPath. Класс DRMPath имеет два экземпляра vairables: logfile и results. logfile - это строка, а результаты - словарь.

Мой конструктор выглядит следующим образом:

def __init__(self, file): 
    self.logilfe = file 
    self.results['GbE1'] = "" 
    self.results['GbE2'] = "" 
    self.results['NetCrypt'] = "" 
    self.results['QAM'] = "" 

, когда я импортировать его из другого питона сценария я:

import VODControl 

Вызов я использую следующее:

d = VODControl.DRMPath('/tmp/adk.log') 

Однако, когда я печатаю значение переменной экземпляра журнала, оно не обновляется с тем, что я передал конструктору :

print d.logfile 

После печати это еще пустая строка. Что дает?

+4

Это опечатка 'logilfe'? – ChristopheD

+0

Я бы рекомендовал переименовать параметр 'file' в' fname' или что-то еще, поскольку в настоящее время вы скрываете [встроенный тип файла] (http://docs.python.org/library/stdtypes.html#file-objects) – Glider

+0

+1 для размещения * точного * кода, который включает опечатку logilfe. Слишком много плакатов вставляют фрагмент, который отражает то, что они * означают * для записи, но который опускает ключевую опечатку или другое boo-boo. – PaulMcG

ответ

2

self.logilfe = file - это не то же самое, что и self.logfile = file. Кроме того, это, скорее всего, возвращает None, а не пустую строку.

+0

Ну, я не чувствую себя огромным оселком. Иногда вам просто нужен второй набор глаз. Спасибо богам, что у меня есть StackOverflow вместо моих коллег, чтобы сделать себя дураком перед собой. Спасибо, ребята, неправильное обращение было ... duh – slappyjam

Смежные вопросы