2014-02-12 2 views
0

У меня есть класс, позволяет сказать:Лучшие способы доступа к экземпляру класса атрибутов в питоне

#!/usr/bin/env python 

class testclass(object): 
    def __init__(self, a, b, c): 
     self.__attr1 = a 
     self.__attr2 = b 
     self.__attr3 = c 

    def meth(self): 
     ## run some checks on self.__attr1, self.__attr2, self.__attr3 
        ## How to do that? 

if __name__ == '__main__': 
    t = testclass("dd", "ee", "gg") 

Вопрос: В случае, если у меня есть несколько атрибутов, а не только три, что это лучший способ, чтобы написать метод meth ? Я собираюсь выполнить ту же проверку всех атрибутов.

ответ

1

Самый простой способ - не хранить их как отдельные атрибуты. В этом примере я использую аргумент упаковку передать a, b и c как кортеж abc и хранению, что, как self._attrs:

class testclass(object): 
    def __init__(self, *abc): 
     self._attrs = abc 

    def meth(self): 
     for attr in self._attrs: 
      print attr 

if __name__ == '__main__': 
    t = testclass("dd", "ee", "gg") 
+0

Кроме того, если вы хотите получить доступ ко всем атрибутам вашего экземпляра, вы можете вызвать 'dir (self)', но вы также получите встроенные вложения. Лучше всего захватить то, что вы хотите, сохранив надлежащим образом – mhlester

0

не очень уверены, что у вида чеков на ATTR

, но до сих пор я думаю

защиту получить (самоощущение, экземпляр, владелец):

является somethi ng может помочь u :)

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