- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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
。我的问题是:
最佳答案
在没有属性的语言(例如java)中,这种情况非常常见,以至于 has become a standard ,并且所有框架都假设 getter/setter 已经存在。
但是,在 python 中,您可以拥有属性,它们本质上是 getter/setter,可以稍后添加,而无需更改使用变量的代码。所以,没有理由在 python 中这样做。将字段用作公共(public)字段,并在以后发生变化时添加属性。
注意:在“私有(private)”变量中使用单下划线而不是双下划线。这不仅是通用约定,而且解释器对双下划线的处理方式也不同。
关于Python封装了现实世界的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52606882/
笙歌 痞性. 剩余 青怏 洒脱 现实 搁浅° 软萌 路途 娼妓 离骚 逐你 微尘 迷魂 ▼ 扎心 堇夏 残年っ ╭淡妆╮ 24K.纯疯 隐痛
我正在尝试不费吹灰之力地实现完全有效的持久性无知。不过我有很多问题: 最简单的选项 这真的很简单——可以像在 SOA 中那样使用 Spring Data 注释对实体进行注释(但让它们真正执行逻辑)?除
我想完成一项简单的任务。 我在可变宽度容器中有一个图像。 容器的宽度可以为 300、400、700 或 900 像素。这是通过媒体查询完成的图像应占据该容器的所有宽度。所以它也将是 300、400、7
我在使用 Storyboards AutoRotation 和 iPhone 时遇到问题。我已经将一个非常简单的项目与 3 个 View Controller 放在一起,并将其上传到 gitHub 以
我是一名优秀的程序员,十分优秀!