TL; DR: как лучше всего получить доступ к атрибутам экземпляра класса и изменить их?
Допустим, у нас есть класс для создания объекта, который предназначен для хранения данных о продукте (например, может быть, набор основных данных продукта ).
class StoreProduct(object):
def __init__(self,ProductID,ProductPrice,ProductDescription):
self.ProductID = ProductID
self.ProductPrice = ProductPrice
self.ProductDescription = ProductDescription
def ChangeProductPrice(self, newProductPrice):
self.ProductPrice = newProductPrice
И у нас есть другой класс, который мы можем использовать для доступа к этим экземплярам, созданным StoreProduct (), с методами для внесения корректировок / изменений.
class ChangeProductData(object):
def __init__(self):
pass
@staticmethod
def ChangeProductObjectPrice(newProductPrice,ProductObject):
ProductObject.ProductPrice = newProductPrice
Итак мы создаем экземпляр с именем Product1:
Product1 = StoreProduct(
ProductID="Product1",
ProductPrice=4,
ProductDescription="A nice lamp"
)
Какой код лучше всего использовать для чтения и / или изменения экземпляров класса?
Если бы я хотел изменить атрибут в продукте 1 (в данном случае price) в целом приемлемо, или это плохой код?
Метод 1
ChangeProductData().ChangeProductObjectPrice(8,Product1)
Или это предпочтительный способ?
Метод 2
Product1.ChangeProductPrice(2)
Когда могут быть исключения?
Хотя вышеупомянутые упрощенные ситуации, то, что я сейчас прочитал, похоже, указывает что Метод 2 может быть лучшей практикой. Однако не будет ли метод 1 обеспечивать большую гибкость в будущем (например, если вам нужно изменить способ работы метода или добавить новые методы).
Я также читал в getattr () и setattr (), но люди, похоже, не знают, лучше ли это использовать точку (например, Product1.ProductPrice, чтобы узнать цену).