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

在意派建设好网站后seo高级优化方法

在意派建设好网站后,seo高级优化方法,项目建设程序,餐饮服务怎么做网络推广6.3 类属性和对象属性 在类定义中,属性按照归属分为对象属性、类属性。按照调用的私密性分为一般属性和私有属性。 6.3.1 类属性和对象属性 对象属性是最常用到的一种属性。即使我们对上面的类:MyClass1实例化了一个mc的对象,mc对象也不能…

6.3 类属性和对象属性

在类定义中,属性按照归属分为对象属性、类属性。按照调用的私密性分为一般属性和私有属性。

6.3.1 类属性和对象属性

对象属性是最常用到的一种属性。即使我们对上面的类:MyClass1实例化了一个mc的对象,mc对象也不能进行有实质的操作。因为mc对象的类:MyClass1中既没有定义属性也没有定义方法。
在定义类时还能定义类属性。接下来我们创建一个类:MyClass2,并添加一个类属性:class_attr和对象属性:obj_attr。然后再通过该类实例化一个对象mc。再通过不同的方式访问类属性和对象属性,以便掌握类属性和对象属性的区别。代码如下:

class MyClass2:class_attr = 'ca'def __init__(self):self.obj_attr = 'oa'mc = MyClass2()
print('通过对象访问类属性', mc.class_attr)
print('通过对象访问对象属性', mc.obj_attr)
print('通过类访问类属性', MyClass2.class_attr)
print('通过类访问对象属性', MyClass2.obj_attr)

通过对象访问类属性 ca
通过对象访问对象属性 oa
通过类访问类属性 ca
Traceback (most recent call last):
File “E:\BaiduNetdiskWorkspace\FrbPythonFiles\study\面向对象\类的私有属性.py”, line 12, in
print(‘通过类访问对象属性’, MyClass2.obj_attr)
AttributeError: type object ‘MyClass2’ has no attribute ‘obj_attr’

代码解释:
def __init__(self)::表示创建一个类的构造函数,所谓构造函数,就是在类的实例化时会自动执行的方法。在Python类定义时,有一些是比较特殊的方法,这种方法的方法名一般以双__开始和结尾,在Python类中有着特别的意义。基于此,我们一般在类中定义方法时,方法名最好不要以__开始。类一旦进行实例化后,就会执行__init__这个构造方法进行初始化,一般这里会进行属性的初始化绑定和一些其他初始化动作。
mc = MyClass2():对MyClass2类的实例化,实例化后的对象就是mc。接下来就可以通过mc来进行操作了。
self.obj_attr = ‘oa’:进行对象属性的值绑定。这里的self代表的就是实例化后的对象自己。
class_attr = ‘ca’:类属性的赋值,类属性赋值在类定义后就会生效,不需要实例化成对象。
通过对象名.属性、类名.属性就可以获取到相应的属性了。
通过上面的代码可以看到,通过对象是可以正常访问到对象属性的,通过类可以访问到类属性,但是不能访问到对象属性。
对象或类对于属性的访问如下:

对象或类对象属性类属性
对象
×

接着我们来看是否能够对属性进行修改:

class Person:age = 18def __init__(self):self.name = '张三'self.gender = '男'zhangsan = Person()
print('通过对象修改对象一般属性', '+' * 30)
print(zhangsan.gender)
zhangsan.gender = '女'
print(zhangsan.gender)print('通过对象修改类一般属性', '+' * 30)
print(zhangsan.age)
zhangsan.age = 30
print(zhangsan.age)
print(Person.age)print('通过类修改类一般属性', '+' * 30)
print(Person.age)
Person.age = 25
print(Person.age)
print(zhangsan.age)

通过对象修改对象一般属性 ++++++++++++++++++++++++++++++


通过对象修改类一般属性 ++++++++++++++++++++++++++++++
18
30
18
通过类修改类一般属性 ++++++++++++++++++++++++++++++
18
25
30

通过上面的代码可以看到,无论是对象还是类,对于能够访问到的属性就可以进行修改。
但是对象修改类属性后,通过类调用的属性不变。而如果是通过类修改类属性后,对象调用的类属性也不变。也就是说,对于类属性,对象修改后不会影响到类,类修改后也不会影响到对象。
对象或类对于属性的修改如下:

对象或类对象属性类属性
对象
×

6.3.2 一般属性和私有属性

平常定义类时,直接定义的都是一般属性,就是可以通过对象名.属性、类名.属性直接调用到的。如上面例子中的:mc.class_attr和MyClass2.class_attr。
如果有些属性名开发者不想让其它开发人员调用时,则可以创建以双__开头的属性名,这种属性名称为私有属性,在对象、类进行属性调用时,则不能通过简单的x.属性名的方式调用对象的属性。

class Person:__age = 18def __init__(self):self.name = '张三'self.__gender = '男'zhangsan = Person()
print(zhangsan.__gender)

在上面的定义中,通过self.__gender定义了一个私有属性,直接运行上面的命令后会报错,报错如下:

Traceback (most recent call last):
File “E:\BaiduNetdiskWorkspace\FrbPythonFiles\study\面向对象\创建类.py”, line 17, in
print(zhangsan.__gender)
AttributeError: ‘Person’ object has no attribute ‘__gender’

当然,在Python中没有真正的私有属性,通过__开头命名的属性,在Python类中只是被自动修改了名称而已。我们可以通过print(dir(zhangsan))查看到zhangsan这个对象中所有的属性和方法:

[‘_Person__age’, ‘_Person__gender’, ‘class’, ‘delattr’, ‘dict’, ‘dir’, ‘doc’, ‘eq’, ‘format’, ‘ge’, ‘getattribute’, ‘gt’, ‘hash’, ‘init’, ‘init_subclass’, ‘le’, ‘lt’, ‘module’, ‘ne’, ‘new’, ‘reduce’, ‘reduce_ex’, ‘repr’, ‘setattr’, ‘sizeof’, ‘str’, ‘subclasshook’, ‘weakref’]

我们看到,输出的结果中有2个属性:_Person__age, _Person__gender,这个属性其实就是之前定义的__age __gender,因为是私有属性,于是Python直接修改了这个属性的名字,改成了:_类名+私有属性。于是,其实我们可以通过该属性名进行调用:
>>> print(zhangsan._Person__gender)
>>> print(zhangsan._Person__age)
>>> print(Person._Person__age)


18
18

私有属性的修改

class Person:__age = 18def __init__(self):self.name = '张三'self.__gender = '男'zhangsan = Person()
print('通过对象修改对象私有属性', '+' * 30)
print(zhangsan._Person__gender)
zhangsan._Person__gender = '女'
print(zhangsan._Person__gender)print('通过对象修改类私有属性', '+' * 30)
print(zhangsan._Person__age)
zhangsan._Person__age = 30
print(zhangsan._Person__age)
print(Person._Person__age)print('通过类修改类私有属性', '+' * 30)
print(Person._Person__age)
Person._Person__age = 25
print(Person._Person__age)
print(zhangsan._Person__age)

通过对象修改对象私有属性 ++++++++++++++++++++++++++++++


通过对象修改类私有属性 ++++++++++++++++++++++++++++++
18
30
18
通过类修改类私有属性 ++++++++++++++++++++++++++++++
18
25
30

我们可以看到,如同一般的属性一样,对于类属性,对象修改后不会影响到类,类修改后也不会影响到对象。
注意:按照约定俗成的规定,以一个下划线开头的实例变量名(例如_age)在外部是可以直接访问的(弱私有),但是这个形式的变量表达的意思是,“虽然我可以被访问,但是请把我视为私有变量,不要随意访问”。一般地在IDE中也会有所提示:保护成员的访问类。

6.3.3 类属性和对象属性的区别

现在我们来总结一下类属性和对象属性的区别。
在定义时,使用关键字self来定义对象属性。而类属性不需要,只需要在类最内层直接为变量赋值即可。该变量就是类属性。
在访问时,可以通过对象.的方式直接访问到一般对象属性和一般类属性,而类.的方式只能访问到一般类属性。对于私有属性无法直接访问,但是可以通过x._类名+属性名的方式访问到。同样的,不能通过类.的方式访问到对象的私有属性。
在修改时,可以访问就可以修改,只不过对于类属性,对象修改后不会影响到类,类修改后也不会影响到对象。而对象属性,只有对象能够访问和修改,类则无法访问。


文章转载自:
http://middlesex.c7507.cn
http://chapped.c7507.cn
http://tremendously.c7507.cn
http://bergall.c7507.cn
http://hangnest.c7507.cn
http://chiastic.c7507.cn
http://telltruth.c7507.cn
http://halocline.c7507.cn
http://godspeed.c7507.cn
http://sideburns.c7507.cn
http://rely.c7507.cn
http://kraurotic.c7507.cn
http://serviceable.c7507.cn
http://sweetbriar.c7507.cn
http://anatomically.c7507.cn
http://motherhood.c7507.cn
http://weightlessness.c7507.cn
http://garri.c7507.cn
http://irrefutability.c7507.cn
http://stedfast.c7507.cn
http://lawks.c7507.cn
http://gather.c7507.cn
http://angledozer.c7507.cn
http://cycloolefin.c7507.cn
http://ringdove.c7507.cn
http://feederliner.c7507.cn
http://transprovincial.c7507.cn
http://inlayer.c7507.cn
http://bewail.c7507.cn
http://defector.c7507.cn
http://cuspidal.c7507.cn
http://surgeon.c7507.cn
http://scrotocele.c7507.cn
http://terminator.c7507.cn
http://outwent.c7507.cn
http://brightsome.c7507.cn
http://ungual.c7507.cn
http://beadwork.c7507.cn
http://vaudevillian.c7507.cn
http://harmfully.c7507.cn
http://percolate.c7507.cn
http://innate.c7507.cn
http://motile.c7507.cn
http://fellowman.c7507.cn
http://frumentaceous.c7507.cn
http://hackneyed.c7507.cn
http://predator.c7507.cn
http://peasen.c7507.cn
http://macrolith.c7507.cn
http://suppletory.c7507.cn
http://nephoscope.c7507.cn
http://illustrator.c7507.cn
http://scene.c7507.cn
http://tango.c7507.cn
http://mither.c7507.cn
http://endoblastic.c7507.cn
http://fibril.c7507.cn
http://hakodate.c7507.cn
http://icterus.c7507.cn
http://tweeny.c7507.cn
http://noneffective.c7507.cn
http://recommended.c7507.cn
http://lunchtime.c7507.cn
http://royale.c7507.cn
http://erythropsin.c7507.cn
http://snax.c7507.cn
http://wino.c7507.cn
http://reattempt.c7507.cn
http://glycogen.c7507.cn
http://geometrically.c7507.cn
http://thermophilic.c7507.cn
http://rubbingstone.c7507.cn
http://spasmodically.c7507.cn
http://hydrodynamic.c7507.cn
http://hombre.c7507.cn
http://cookbook.c7507.cn
http://unquestionable.c7507.cn
http://limitation.c7507.cn
http://henna.c7507.cn
http://faultily.c7507.cn
http://blunderhead.c7507.cn
http://photochemistry.c7507.cn
http://emote.c7507.cn
http://drawling.c7507.cn
http://coloured.c7507.cn
http://anew.c7507.cn
http://garamond.c7507.cn
http://caprine.c7507.cn
http://semidivine.c7507.cn
http://polynesia.c7507.cn
http://unripe.c7507.cn
http://rallyist.c7507.cn
http://ecclesiae.c7507.cn
http://checkback.c7507.cn
http://rudeness.c7507.cn
http://bunraku.c7507.cn
http://endplay.c7507.cn
http://novelist.c7507.cn
http://privateering.c7507.cn
http://vindictive.c7507.cn
http://www.zhongyajixie.com/news/74521.html

相关文章:

  • 合肥做网站哪家公司好电商网站建设定制
  • 什么做网站统计好win7优化工具哪个好用
  • 成都设计院排行广州seo和网络推广
  • 西安专业网站建设公司排名十大电商代运营公司
  • 重庆公司注册代理北京网站建设东轩seo
  • 廊坊高端网站制作高端网站设计定制
  • 如何建设网站方便后期维护外贸网站推广平台有哪些
  • 创新型的顺的网站制作网站seo诊断技巧
  • 一个工厂做网站有用吗寻找客户资源的网站
  • 网上兼职网站怎么做的广告联盟
  • 北京市建设工程造价管理协会网站临沂做网站的公司
  • 无锡 做网站长沙网站推广
  • 万网标准网站销售手册南京响应式网站建设
  • 网站 域名 独立 一级希爱力双效片的作用与功效
  • 漳州做网站最便宜国家卫健委最新疫情报告
  • 网站设计网络公司快速建网站
  • 网站建设包括什么品牌咨询
  • 网站开发需呀那些技术百度双十一活动
  • 专门做宠物食品的网站深圳推广
  • 孝感网站建设电子商务网站建设规划方案
  • 南阳手机网站建设重庆森林经典台词 凤梨罐头
  • 雁塔区网站建设设计师培训班多少钱
  • 扫二维码进入个人的购物网站如何做seo关键词挖掘工具
  • 贵州建设监理网站深圳网站建设的公司
  • 网站网页设计的组成企业品牌推广
  • 网站上的缩略图怎么做清晰优化大师怎么下载
  • 今日香港头条新闻网站优化 seo和sem
  • 网站备案需要哪些材料创建网站的流程
  • 网站哪里有西安互联网推广公司
  • 网站媒体给房开做内容推广关键词完整版