2013-12-01 2 views
0

Я новичок в python. Когда я вызываю getMetaData из метода getattr, я получаю сообщение об ошибке, которое getMetaData не определено. getMetaData определяется в том же классе, что и getattr, и когда я прокомментирую вызов getMetaData, ошибки нет. Я получаю ошибку, даже если я перемещаю getMetaData выше определения getattr. Почему не удается getattr увидеть getmetadata?Получить метаданные не определены

Вот код:

def getattr(self, path, fh=None): 
    print('get attr' + path) 
    full_path = self._full_path(path) 
    if path.find('catvid') != -1: 
     print 'te' 
     getMetaData() 
     full_path = '/home/memsql/Fuse/catvid.mp4' 
     st = os.lstat(full_path) 
     return dict((key, getattr(st, key)) for key in ('st_atime', 'st_ctime', 
       'st_gid', 'st_mode', 'st_mtime', 'st_nlink', 'st_size', 'st_uid')) 
    else: 
     st = os.lstat(full_path) 
     return dict((key, getattr(st, key)) for key in ('st_atime', 'st_ctime', 
       'st_gid', 'st_mode', 'st_mtime', 'st_nlink', 'st_size', 'st_uid')) 

def getMetaData(): 
    print 'hiya' 
+1

self.getMetaData() – dm03514

ответ

2

Вы должны назвать это как:

self.getMetaData() 

В противном случае Python будет искать глобальную функцию по имени getMetaData и поднимет NameError.

def func(): 
    print 'global' 
...  
>>> class A: 
...  def func(self): 
...   print 'class' 
...  def f(self): 
...   func()  #calls global func() 
...   self.func() #calls A.func(self) 
...   
>>> A().f() 
global 
class 
+0

Когда я использую self.getMetaData я получаю TypeError об ошибке: GetMetadata() принимает никаких аргументов (1 не дано). Как это исправить? – bernie2436

+0

@ akh2103 Сообщение 'getMetaData()' в вопросительном теле, похоже, что вы определили его как staticmethod. –

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