gpt4 book ai didi

python - 在python中,为什么要使用函数来获取类成员?

转载 作者:行者123 更新时间:2023-11-27 23:49:25 26 4
gpt4 key购买 nike

你好,最近看了别人的一些代码,发现别人和我的不同之处在于,他们经常写一个获取类成员的函数。喜欢

def GetHeight
return self.height

不仅仅是使用

self.height

在程序中。

我的意思是,在 C++ 中,我知道它的功能是获取 private 成员。
在 python 中,尽管所有内容都设置为 public (在正常情况下),
为什么它有理由在 python 中使用?那只是糟糕的代码吗?或者其他我忽略的东西?
我是 python 的新手,所以如果你能给我一些建议,我将不胜感激。

编辑:
Similar Question看来我的问题已被确定为与另一个问题重复。我检查了答案,发现答案更像是一般性建议,而不是 pythonic 编程。

虽然下面的回答介绍了python的一个特性——property
这可能无法从那个问题中了解到,所以这就是我认为我的问题是独一无二的原因。

最佳答案

在 Python 中,没有必要创建 getter 方法(特别是如果 getter 只是返回属性值而不进行检查或修改)。您可以实现有意义的 get 和 set 方法,但它们实际上应该做一些事情。首选方法是使用此处所述的属性装饰器:How does the @property decorator work?

class Building(object):
def __init__(self):
self._height = 100

@property
def height(self):
return self._height

@height.setter
def height(self, value):
if 0 < value < 1000:
self._height = value
else:
raise ValueError('Attribute: height must be between 0 and 1000.')

然后在读取或分配给属性时使用属性方法:

b = Building()

print(b.height)
100

b.height = 90
print(b.height)
90

b.height = 2000
print(b.height)
90

按照惯例,保留属性前面有单下划线,私有(private)属性前面有双下划线。然而,这更多是为了提醒类的用户应该小心处理属性,没有什么可以阻止他们访问属性。

关于python - 在python中,为什么要使用函数来获取类成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47687912/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com