Initial commit
This commit is contained in:
67
Exercises/ex9_2.md
Normal file
67
Exercises/ex9_2.md
Normal file
@@ -0,0 +1,67 @@
|
||||
\[ [Index](index.md) | [Exercise 9.1](ex9_1.md) | [Exercise 9.3](ex9_3.md) \]
|
||||
|
||||
# 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:
|
||||
|
||||
```python
|
||||
# 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](soln9_2.md) | [Index](index.md) | [Exercise 9.1](ex9_1.md) | [Exercise 9.3](ex9_3.md) \]
|
||||
|
||||
----
|
||||
`>>>` Advanced Python Mastery
|
||||
`...` A course by [dabeaz](https://www.dabeaz.com)
|
||||
`...` Copyright 2007-2023
|
||||
|
||||
. This work is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/)
|
||||
Reference in New Issue
Block a user