使用函数设置python类属性是一种好习惯吗?

时间:2017-03-14 20:41:48

标签: python class attributes

如果我有一个如下所示的python类:

class MyClass(object):

    def __init__(self, path):
        self.path = path

我知道我可以更改对象实例中的path属性,如下所示:

my_example = MyClass("home/data")
my_example.path = "home/other_data"

但是,我看到一些代码,其中人们使用函数来设置这样的属性:

class MyClass(object):

    def __init__(self, path):
        self.path = path

    def setPath(self, path):
        self.path = path

如果我希望类的实例的用户能够更改属性,那么最好在第二个示例中为此设置一个函数,或者让他们像第一个示例一样手动更改它?

1 个答案:

答案 0 :(得分:-1)

这取决于您在应用程序中需要的模块性。对于整体系统设计,最好让用户通过类方法访问所有类属性。这增加了很多膨胀:每个属性的get / set方法,以及实际操作的其他方法。

实际上,您需要决定您对用户的信任程度。 Python倾向于更直接地编码:让用户直接犯错误。它为您提供的代码更少,对大多数用户来说也更容易。

但是,请考虑您的设计的波动性。您是否需要隐藏用户的类表示?您需要偶尔更换一次吗?这些是将内部表示放在简单,不变的界面的屏蔽后面的绝佳理由:这样,您可以在不破坏所有用户的情况下更改内部结构。的实施方式。