上往建站提供服务器空间服务商,百度快照排名,网站托管,百度推广运营,致力于设计外包服务与源代码定制开发,360推广,搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。
梅州淘宝装修/梅州京东店铺设计/梅州拼多多网店装修公司/梅州企业网店开通申请-网店装修设计

2Traceback (most recent call last):
File "test.py", line 17, in <module>
print counter.__secretCount # 报错,实例不能访问私有变量AttributeError: JustCounter instance has no attribute '__secretCount'
Python不允许实例化的类访问私有数据,但你可以使用 object._className__attrName( 对象名._类名__私有属性名 )访问属性,参考以下实例:
#!/usr/bin/python# -*- coding: UTF-8 -*-class Runoob:
__site = "www.runoob.com"runoob = Runoob()print runoob._Runoob__site
执行以上代码,执行结果如下:
www.runoob.com
单下划线、双下划线、头尾双下划线说明:
__foo__: 定义的是特殊方法,一般是系统定义名字 ,类似 __init__() 之类的。
_foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *
__foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。
bject._className__attrName 实例及解析
#!/usr/bin/python
# -*- coding: UTF-8 -*-
class JustCounter:
__secretCount = 0 # 私有变量
publicCount = 0 # 公开变量
def count(self):
self.__secretCount += 1
self.publicCount += 1
print self.__secretCount
def count2(self):
print self.__secretCount
counter = JustCounter()
counter.count()
# 在类的对象生成后,调用含有类私有属性的函数时就可以使用到私有属性.
counter.count()
#第二次同样可以.
print counter.publicCount
print counter._JustCounter__secretCount # 不改写报错,实例不能访问私有变量
try:
counter.count2()
except IOError:
print "不能调用非公有属性!"
else:
print "ok!" #现在呢!证明是滴!
HaiYan
HaiYan
tan***yan@kaizegf.com
5年前 (2017-04-26)
gongxufan
gon***fan@126.com
参考地址
25
新式类和经典类的区别:
class A:
def foo(self):
print('called A.foo()')
class B(A):
pass
class C(A):
def foo(self):
print('called C.foo()')
class D(B, C,object):
pass
if __name__ == '__main__':
d = D()
d.foo()
D 继承了 object 和不继承程序输出不一样,继承 object 会调用 C 类的 foo,否则会调用 A 的。
使用 super 进行父类构造调用那么必须使用 object 继承的新式类,否则报错。
梅州淘宝装修/梅州京东店铺设计/梅州拼多多网店装修公司/梅州企业网店开通申请-网店装修设计
上往建站提供搭建网站,域名注册,官网备案服务,网店详情页设计,企业网店,专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管,网页美工排版,致力于域名申请,竞价托管,软文推广,全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机,网站推广,百度竞价托管,网站建设,上网建站推广服务,网络公司有哪些等业务,专业团队服务,效果好。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)