当前位置: 首页 > news >正文

服务网站开发论文企业如何开展网络营销

服务网站开发论文,企业如何开展网络营销,网站设计制作 厂,docker 做网站在Java中,通常在类中定义的成员变量为私有变量,在类的实例中不能直接通过对象.属性直接操作,而是要通过getter和setter来操作私有变量。 而在Python中,因为有property这个概念,所以不需要写getter和setter一堆重复的代…

在Java中,通常在类中定义的成员变量为私有变量,在类的实例中不能直接通过对象.属性直接操作,而是要通过getter和setter来操作私有变量。

而在Python中,因为有property这个概念,所以不需要写getter和setter一堆重复的代码来操作私有变量。Python“私有变量”通常在变量前加上“_”或者“__”,例如_attr或者__attr,这是约定俗成的规范。

把私有属性变成只读特性

class MyClass:def __init__(self, x):self._x = x

这里定义了一个MyClass类,它有一个实例变量_x,绑定了用户传来的x值。_x是私有变量,通过obj._x获取私有变量不符合语言规范,进而我们要使_x变成property(特性),通过obj.x直接访问。

改造后的代码如下:

class MyClass:def __init__(self, x):self._x = x@propertydef x(self):return self._x>>> obj = MyClass(10)
>>> obj.x
10

我们把_x变成了property特性,以只读的方式获取x的值。

我们现在想为x赋值该怎样做呢?

>>> obj.x = 999
Traceback (most recent call last):File "xxx", line 14, in <module>obj.x = 23
AttributeError: can't set attribute

可以看到,抛出了AttributeError: can't set attribute。显然,只读方法不支持赋值。

把私有变量变成可赋值的特性

我们只需要在上述代码改造成:

class MyClass:def __init__(self, x):self._x = x@propertydef x(self):return self._x@x.setterdef x(self, value):self._x = value
>>> obj = MyClass(10)
>>> obj.x = 999
>>> obj.x
999

可以看到,我们为x添加了setter,可以直接为obj.x赋值操作。

property属性能够遮盖实例属性

继续上面的代码,我们看看以下的操作:

>>> obj = MyClass(10)
>>> obj.__dict__
{'_x': 999}  #此时实例变量中有_x的值
>>> obj.__dict__['x'] = 99999  #设置obj的实例变量有x值,跟property属性重名!
>>> obj.__dict__
{'_x': 999, 'x': 99999}  #此时实例变量中有_x和x的值
>>> obj.x     #结果是obj的实例变量还是property属性?
10

如上代码所示,obj对象有一个_x实例变量和一个x的property属性,我们又强行为obj增加了一个x实例变量,这个实例变量x和property属性x同名!

通过obj.x我们得知,返回的是property属性,说明property属性会遮盖实例属性!也可以理解为property属性的优先级更大!

property类解析

我们通常使用内置的@property装饰器。但其实property是一个类,python中类和函数的调用方式都差不多,他们都是可调用对象。

property的构造方法如下:

class property(object):def __init__(self, fget=None, fset=None, fdel=None, doc=None):""""""

它接受4个参数,都可以为空。

第一个为getter,第二个为setter,第三个为delete函数,第四个为文档。

上述代码的另一种写法

class MyClass:def __init__(self, x):self._x = xdef get_x(self):return self._xdef set_x(self, value):self._x = valuex = property(get_x, set_x)
>>> obj = MyClass(10)
>>> obj.x
10

如上,x是property的实例,设置了getter和setter,作为类变量放在MyClass类中。

以上就是property属性的解析。

http://www.mmbaike.com/news/86156.html

相关文章:

  • 服装网站模板免费下载网站如何快速推广
  • 网页设计实训报告300字seo查询工具有哪些
  • 网站开发工程师学什么十大网络推广公司
  • 财务部官方网站经济建设司企业推广策划方案
  • 加强政府门户网站建设通知百度网盘电脑网页版
  • 设计感十足的网站seo网站优化培训
  • 更换模板对网站seo的影响抖音视频排名优化
  • 动态网站建设从入门到精通 下载软件推广怎么做
  • 网站安全检测漏洞扫描风险等级分布抖音seo怎么做的
  • 阳江网站设计公司北京疫情消息1小时前
  • 尤溪网站建设百度首页清爽版
  • 企业微信网站怎么做的搜索引擎优化seo什么意思
  • 网站建设有何好处公关策划公司
  • 做文艺文创产品的网站百度平台营销
  • 企业网站备个人重庆seo排名公司
  • wordpress 三主题站长工具seo综合查询全面解析
  • 创意设计网站自己搭建网站需要什么
  • asp.net网站项目搜索引擎免费下载
  • 网站安全的必要性萧山区seo关键词排名
  • 百度怎么收录我的网站职业技能培训机构
  • 云端网站建设南昌seo营销
  • 在58同城做网站怎么样抖音关键词排名
  • 重庆网站关键词排名优化公司哪家好
  • 深圳福田建网站seo优化网页
  • 免费做网站软件网络软文名词解释
  • asp.net 手机网站开发教程游戏推广话术技巧
  • 世安建设集团有限公司网站市场营销证书含金量
  • excel做邮箱网站怎么加3wwwapp网站推广平台
  • 合肥企业建站系统北京百度seo服务
  • 做离线版申报表进入哪个网站做销售有什么技巧和方法