2010-07-28 3 views

ответ

2

Сначала нужно определить класс MainString. В __init__ метода (конструктор), создавать переменные экземпляра (Sub1 и т.д.):

class MainString(object): 
    def __init__(self): 
     self.Sub1 = "" 
     self.Sub2 = "" 
     self.Sub3 = "" 

Затем вы создаете экземпляр класса. Вы можете изменить значение переменных экземпляра для этого экземпляра:

StringNumberOne = MainString() 
StringNumberOne.Sub1 = "hello" 
2

Я не знаю, понимаю ли я ваш вопрос. Вы можете Habe класс как это:

class ManySubs(object): # explicit inheritance not needed in 3.x 
    def __init__(self, *subs): 
     self._subs = subs 
     # add sub1..subN fields, but only because you asked for it 
     # I think a dynamic fields are an especially bad idea 
     # plus, about everytime you have x1..xN, you actually want an array/list 
     for i in range(len(subs)): 
      setattr(self, 'sub'+str(i+1), subs[i]) 

    # wrapping code for sequencemethods (__len__, __getitem__, etc) 

    def __str__(self): 
     return ''.join(self._subs) 
+1

выше код отсутствует '' def' в __str__' – bstpierre

4

Существует также назван Кортеж подход:

from collections import namedtuple 

Mainstring = namedtuple('Mainstring', 'sub1 sub2 sub3') 

example = Mainstring("a", "b", "c") 
print example.sub1 # "a"