Intermediate classes: Difference between revisions
Jump to navigation
Jump to search
| Line 16: | Line 16: | ||
== Exercises to be handed in == | == Exercises to be handed in == | ||
The first two exercises will continue with the '''Fasta''' class from last time. | The first two exercises will continue with the '''Fasta''' class from last time. | ||
# Use magic methods to add iteration and length evaluation (using '''__iter__''' and '''__len__''' magic methods) to the '''Fasta''' class. Do this so you can write code like <div style="font-family:'Courier New'">if len(MyFastaInstance) > 0:<br> for header, sequence in MyFastaInstance:<br> # Do something with header and sequence<br> print(header, sequence)</div>The function '''len''' returns the number of sequences.<br><br> | # Use magic methods to add ''iteration'' and ''length'' evaluation (using '''__iter__''' and '''__len__''' magic methods) to the '''Fasta''' class. Do this so you can write code like <div style="font-family:'Courier New'">if len(MyFastaInstance) > 0:<br> for header, sequence in MyFastaInstance:<br> # Do something with header and sequence<br> print(header, sequence)</div>The function '''len''' returns the number of sequences.<br><br> | ||
# Add the methods '''deletethis()''', '''insertthis(header, sequence)''', '''verifythis(alphabet)''' and '''discardthis(alphabet)''' to the '''Fasta''' class. The methods should only work when ''iterating over an instance at the current item'', i.e. they work when you are iterating over the fasta sequences on the ''current'' sequence and header, like this:<div style="font-family:'Courier New'">for header, sequence in MyFastaInstance:<br> if not MyFastaInstance.verifythis("DNA"):<br> MyFastaInstance.deletethis()<br> continue<br> # Do something with header and sequence</div>As some may remember, it is normally impossible to successfully iterate straightforward through a list and delete and/or add elements to the list during the iteration. You have to make this possible, maybe by changing the way your iteration works in the previous exercise.<br><br> | # Add the methods '''deletethis()''', '''insertthis(header, sequence)''', '''verifythis(alphabet)''' and '''discardthis(alphabet)''' to the '''Fasta''' class. The methods should only work when ''iterating over an instance at the current item'', i.e. they work when you are iterating over the fasta sequences on the ''current'' sequence and header, like this:<div style="font-family:'Courier New'">for header, sequence in MyFastaInstance:<br> if not MyFastaInstance.verifythis("DNA"):<br> MyFastaInstance.deletethis()<br> continue<br> # Do something with header and sequence</div>As some may remember, it is normally impossible to successfully iterate straightforward through a list and delete and/or add elements to the list during the iteration. You have to make this possible, maybe by changing the way your iteration works in the previous exercise.<br><br> | ||
== Exercises for extra practice == | == Exercises for extra practice == | ||
Revision as of 11:04, 17 March 2026
| Previous: Beginning classes | Next: Beginning unit test |
Required course material for the lesson
Powerpoint: Classes
Resource: Example code - Classes
Subjects covered
Magic methods in classes
Object Oriented Programming
Polymorphism and inheritance
Practical knowledge
Exercises to be handed in
The first two exercises will continue with the Fasta class from last time.
- Use magic methods to add iteration and length evaluation (using __iter__ and __len__ magic methods) to the Fasta class. Do this so you can write code like if len(MyFastaInstance) > 0:The function len returns the number of sequences.
for header, sequence in MyFastaInstance:
# Do something with header and sequence
print(header, sequence) - Add the methods deletethis(), insertthis(header, sequence), verifythis(alphabet) and discardthis(alphabet) to the Fasta class. The methods should only work when iterating over an instance at the current item, i.e. they work when you are iterating over the fasta sequences on the current sequence and header, like this:for header, sequence in MyFastaInstance:As some may remember, it is normally impossible to successfully iterate straightforward through a list and delete and/or add elements to the list during the iteration. You have to make this possible, maybe by changing the way your iteration works in the previous exercise.
if not MyFastaInstance.verifythis("DNA"):
MyFastaInstance.deletethis()
continue
# Do something with header and sequence