gpt4 book ai didi

Python封装了现实世界的属性

转载 作者:行者123 更新时间:2023-12-01 08:59:09 24 4
gpt4 key购买 nike

我正在使用 Python 进行一些关于在面向对象编程中使用封装的研究,并且我偶然发现了这个主题,该主题对封装属性如何工作以及它们的使用有不同的看法。我编写了这段代码,这只让事情变得更加困惑:

class Dog:
def __init__(self,weight):
self.weight = weight
__color =''
def set_color(self,color):
self.__color = color
def get_color(self):
print(self.__color)
rex = Dog(59)
rex.set_color('Black')
rex.get_color()
rex.color = 'White'
rex.__color = rex.color
print(rex.__color)
rex.get_color()

结果是:

>Black
>White
>Black

我明白这背后的原因是因为当我们做作业rex.__color = rex.color时,创建一个不指向 real __color 的新属性实例的Dog 。我的问题是:

  • 这种情况常见吗?
  • 私有(private)属性真的经常使用吗?

最佳答案

在没有属性的语言(例如java)中,这种情况非常常见,以至于 has become a standard ,并且所有框架都假设 getter/setter 已经存在。

但是,在 python 中,您可以拥有属性,它们本质上是 getter/setter,可以稍后添加,而无需更改使用变量的代码。所以,没有理由在 python 中这样做。将字段用作公共(public)字段,并在以后发生变化时添加属性。

注意:在“私有(private)”变量中使用单下划线而不是双下划线。这不仅是通用约定,而且解释器对双下划线的处理方式也不同。

关于Python封装了现实世界的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52606882/

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