AustEcon / bitsv

BitSV: Bitcoin made easy. Documentation:
https://AustEcon.github.io/bitsv
MIT License
96 stars 28 forks source link

Change some public attributes to properties to eliminate potential problems #84

Open SanyueHan opened 2 years ago

SanyueHan commented 2 years ago

Hello, I'm a beginner but I noticed that there might be a small problem in the PrivateKey class: In this class, you defined balance, unspents, and transactions as public attributes, but initialized them with zero or vacant list. If you instantiate a prv key obj without calling get_balance()/get_unspents()/get_transactions() methods, the result of key.balance, key.unspents, key.transactions are all wrong. This may be misleading and may trigger potential bugs if your package is used without attention because the public attributes look like properties. A good solution is to make these attributes protected and create their corresponding properties, leaving the interface unchanged while solving the consistency problem, just like the self._address attribute does.