1,105,456 Community Members

Multiple Class Objects that can be "incremented"

Member Avatar
kayoh
Newbie Poster
9 posts since Aug 2011
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 
Dim Processors(4) As ProcessorType

For j = 1 To 4 Step 1
       Put #filenum, WritePos, Processors(j).byte0
       WritePos = WritePos + 1

I'm in the process of translating this VBA code to python, and essentially what it does is creates 4 Processor Objects but as you can see from the for loop it allows the processor to be incremented to the next one so that it's byte0 from each processor is written.

How would you do this in python, any advice?

Member Avatar
pyTony
pyMod
6,103 posts since Apr 2010
Reputation Points: 818 [?]
Q&As Helped to Solve: 1,056 [?]
Skill Endorsements: 42 [?]
Moderator
Featured
 
1
 

Something like:

class Processor(object):
    def __init__(self):
        self.byte0 = 0

processor_count = 4
processors = [Processor() for count in range(processor_count)]
for j in range(4):
    print processors[j].byte0

or

class Processor(object):
    def __init__(self):
        self.byte0 = 0

    def __str__(self):
        return '%r, byte0 = %i' % (self, self.byte0)

processor_count = 4
processors = [Processor() for count in range(processor_count)]
for processor in processors:
    print(processor)
Member Avatar
Enalicho
Junior Poster in Training
62 posts since Aug 2011
Reputation Points: 14 [?]
Q&As Helped to Solve: 13 [?]
Skill Endorsements: 0 [?]
 
0
 

If you want to know how to increment multiple sequences at once -

start_position = 0
cores = [1,2,3,4]
for core, position in zip(cores, xrange(start_position, len(cores))):
    print core, position

I'm not sure what you mean by "allows the processor to be incremented to the next one".

class Processor(object):
    def __init__(self, core_number):
        self.core_number = core_number

    def __str__(self):
        return repr('Ohai, I have #{core_number} cores'.format(core_number=self.core_number))


processors = []
for core_number in xrange(4):
    processors.append(Processor(core_number))

for processor in processors:
    print processor
    print 'I am of type {object_type}'.format(object_type=type(processor))

Perhaps that's what you mean? A dict, of course, would be better suited to all examples of this.

Member Avatar
kayoh
Newbie Poster
9 posts since Aug 2011
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

Thank you!

I see we came up with a similar solution, it's essentially a list of object instances right?

The Following is what I came up with.

# a test class we can instantiate
class Instance:
    def __init__(self, number):
        self.number = number
        
processors = [Instance(n) for n in range(6)]
 
for f in range(0,3):
    print processors[f].number

print type(processors)
print type(f)
print type(processors[0])
Member Avatar
kayoh
Newbie Poster
9 posts since Aug 2011
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

Enalicho, what I meant was a way to increment to the next class object in a for loop, The solutions we came up with work by putting each object instance in a list and then calling the list and incrementing the list's index to get to each item

Member Avatar
Enalicho
Junior Poster in Training
62 posts since Aug 2011
Reputation Points: 14 [?]
Q&As Helped to Solve: 13 [?]
Skill Endorsements: 0 [?]
 
0
 
# a test class we can instantiate
class Instance:
    def __init__(self, number):
        self.number = number

Why not give it a sensible name, because you'll probably come back to it later, like "Processor" or "Core".

processors = [Instance(n) for n in range(6)]

Funny name, for a list of instances of Instance ;)

for f in range(0,3):
    print processors[f].number

Well, you're missing out two processors/cores. What did they ever do to you? :P
Seriously though, why not use the lovely syntax of -

for processor in processors:
    print processor.number
Member Avatar
kayoh
Newbie Poster
9 posts since Aug 2011
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

Haha, I totally get you, I have all the Processors listed out and named in my actual code but this is just an example I used to implement what I was trying to accomplish.

My actual program is generating a file and depending on which unit there are a different number of processors, so the biggest unit has 3 processors and each one has 4 bytes of data that need to be packed into a file along with file names and other things. The actual size of each file varies from unit to unit. So I'm using a for loop that can go from each object and put in the bits and addresses and what not.

Question Answered as of 2 Years Ago by Enalicho and pyTony
You
This question has already been solved: Start a new discussion instead
Post:
Start New Discussion
View similar articles that have also been tagged: