Skip to content

Latest commit

 

History

History
67 lines (47 loc) · 2.08 KB

ex9_2.md

File metadata and controls

67 lines (47 loc) · 2.08 KB

[ Index | Exercise 9.1 | Exercise 9.3 ]

Exercise 9.2

Objectives:

  • Learn how to create a Python package

Note

This exercise mostly just involves copying files on the file system. There shouldn't be a lot of coding.

(a) Making a Package

In previous exercises, you created the following files that were related to type-checked structures, reading data, and making tables:

  • structure.py
  • validate.py
  • reader.py
  • tableformat.py

Your task is to take all of these files and move them into a package called structly. To do that, follow these steps:

  • Make a directory called structly
  • Make an empty file __init__.py and put it in the structly directory
  • Move the files structure.py, validate.py, reader.py, and tableformat.py into the structly directory.
  • Fix any import statements between modules (specifically, the structure module depends on validate).

Once you've done that, modify the stock.py program so that it looks exactly like this and that it works:

# stock.py

from structly.structure import Structure

class Stock(Structure):
    name = String()
    shares = PositiveInteger()
    price = PositiveFloat()
    
    @property
    def cost(self):
        return self.shares * self.price

    def sell(self, nshares: PositiveInteger):
        self.shares -= nshares

if __name__ == '__main__':
    from structly.reader import read_csv_as_instances
    from structly.tableformat import create_formatter, print_table
    portfolio = read_csv_as_instances('Data/portfolio.csv', Stock)
    formatter = create_formatter('text')
    print_table(portfolio, ['name','shares','price'], formatter)

[ Solution | Index | Exercise 9.1 | Exercise 9.3 ]


>>> Advanced Python Mastery
... A course by dabeaz
... Copyright 2007-2023

. This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License