Reputation: 1863
How would one do something like this in python
Mainstring:
Sub1
Sub2
Sub3
then call upon each of those values by defining a Mainstring StringNumberOne
and
StringNumberOne.Sub1 = ""
Upvotes: 0
Views: 237
Reputation:
I'm not sure if I understand your question. You can habe a class like this:
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)
Upvotes: 2
Reputation: 94575
There is also the named tuple approach:
from collections import namedtuple
Mainstring = namedtuple('Mainstring', 'sub1 sub2 sub3')
example = Mainstring("a", "b", "c")
print example.sub1 # "a"
Upvotes: 4
Reputation: 123558
First you define a class MainString
. In the __init__
method (the constructor), you create the instance variables (Sub1
, etc):
class MainString(object):
def __init__(self):
self.Sub1 = ""
self.Sub2 = ""
self.Sub3 = ""
Then you create an instance of the class. You can change the value of instance variables for that instance:
StringNumberOne = MainString()
StringNumberOne.Sub1 = "hello"
Upvotes: 2