Python_66面向对象之成员修饰符

1、修饰符  修饰器  setattr    有些可以用,有些不可以用

#成员的种类 :普通字段  静态字段  普通方法   静态方法  类方法  普通特性
class FFF:
x='xxxxxdddd'
__x1='x11111111' #'__'就是成员修饰符,x1就是被修饰后的变量字段 私有的 只能在内部访问
def __init__(self):
print ('111')
def fetch(self,bak):
print (bak)
print (FFF.__x1)

print (FFF.x)
f=FFF()
f.fetch('ddd')
输出————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

xxxxxdddd
111
ddd
x11111111

********************************************************************************************************************************************************************************************************************************************

#成员的种类 :普通字段  静态字段  普通方法   静态方法  类方法  普通特性
class FFF:
x='xxxxxdddd'
__x1='x11111111' #'__'就是成员修饰符,x1就是被修饰后的变量字段 私有的 只能在内部访问
def __init__(self):
print ('111')
def fetch(self,bak):
print (bak)
print (FFF.__x1)

print (FFF.x)
f=FFF()
print (f.__x1)
输出————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

Traceback (most recent call last):
File "D:/Users/Administrator/PycharmProjects/untitled/venv/yingshe/chengyuanxiushifu.py", line 13, in <module>    ###这里就报错了,说明__x1这个变量是不能在外部被用的
print (f.__x1)
AttributeError: 'FFF' object has no attribute '__x1'
xxxxxdddd
111

*************************************************************************************************************************************************************************************************************************************************************

 

#成员的种类 :普通字段  静态字段  普通方法   静态方法  类方法  普通特性
class FFF:
x='xxxxxdddd'
__x1='x11111111' #'__'就是成员修饰符,x1就是被修饰后的变量字段 私有的 只能在内部访问
def __init__(self):
print ('111')
self.__name='name222' #这个name依旧是那个私有的字段 依旧是不可被调用的
def fetch(self,bak):
print (bak)
print (FFF.__x1)


class Bar(FFF):
def fetch(self):
pass

bbb=Bar()
print (bbb.name)
print (FFF.x)
f=FFF()
输出————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

Traceback (most recent call last):
File "D:/Users/Administrator/PycharmProjects/untitled/venv/yingshe/chengyuanxiushifu.py", line 20, in <module>   #依旧提示name不可调用的变量
print (bbb.name)
AttributeError: 'Bar' object has no attribute 'name'
111


***************************************************************************************************************************************************************************************************************************

#成员的种类 :普通字段  静态字段  普通方法   静态方法  类方法  普通特性
class FFF:
x='xxxxxdddd'
__x1='x11111111' #'__'就是成员修饰符,x1就是被修饰后的变量字段 私有的 只能在内部访问
def __init__(self):
print ('111')
self.__name='name222' #这个name依旧是那个私有的字段 依旧是不可被调用的
def fetch(self,bak):
print (bak)
print (FFF.__x1)


class Bar(FFF):
def fetch(self):
print (self.__name) #这个地方虽然是继承了父类,但是依旧不可用父类的__name这个私有字段,因为是私有的

bbb=Bar()
bbb.fetch()
print (FFF.x)
f=FFF()
输出————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

Traceback (most recent call last):
111
File "D:/Users/Administrator/PycharmProjects/untitled/venv/yingshe/chengyuanxiushifu.py", line 18, in <module>
bbb.fetch()
File "D:/Users/Administrator/PycharmProjects/untitled/venv/yingshe/chengyuanxiushifu.py", line 15, in fetch
print (self.__name)
AttributeError: 'Bar' object has no attribute '_Bar__name'

******************************************************************************************************************************************************************************************************************************************************************************************************

 

#成员的种类 :普通字段  静态字段  普通方法   静态方法  类方法  普通特性
class FFF:
x='xxxxxdddd'
__x1='x11111111' #'__'就是成员修饰符,x1就是被修饰后的变量字段 私有的 只能在内部访问
def __init__(self):
print ('111')
self.__name='name222' #这个name依旧是那个私有的字段 依旧是不可被调用的
def fetch(self,bak):
print (bak)
print (FFF.__x1)


class Bar(FFF):
def fetch(self):
print ('bbbbar')

bbb=Bar()
bbb.fetch()
print (FFF.x)
f=FFF()
print (bbb._FFF__x1)
输出————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

111
bbbbar
xxxxxdddd
111
x11111111

#可以直接用类来调用类的私有变量字段



********************************************************************************************************************************************************************************************************************************************************************************************

面向对象特殊的成员之call
#成员的种类 :普通字段  静态字段  普通方法   静态方法  类方法  普通特性
class FFF:
x='xxxxxdddd'
__x1='x11111111' #'__'就是成员修饰符,x1就是被修饰后的变量字段 私有的 只能在内部访问
def __init__(self):
print ('111')
self.__name='name222' #这个name依旧是那个私有的字段 依旧是不可被调用的
def fetch(self,bak):
print (bak)
print (FFF.__x1)


class Bar(FFF):
def fetch(self):
print ('bbbbar')

bbb=Bar()
bbb()
输出————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

111
Traceback (most recent call last):
File "D:/Users/Administrator/PycharmProjects/untitled/venv/yingshe/chengyuanxiushifu.py", line 18, in <module>
bbb()
TypeError: 'Bar' object is not callable

 

如果将对象后边也加上  () 会导致报错提示  没有被call

********************************************************************************************************************************************************************************************************************************************************
#成员的种类 :普通字段  静态字段  普通方法   静态方法  类方法  普通特性
class FFF:
x='xxxxxdddd'
__x1='x11111111' #'__'就是成员修饰符,x1就是被修饰后的变量字段 私有的 只能在内部访问
def __init__(self):
print ('111')
self.__name='name222' #这个name依旧是那个私有的字段 依旧是不可被调用的
def fetch(self,bak):
print (bak)
print (FFF.__x1)
def __call__(self, *args, **kwargs):
print ('calll1111')


class Bar(FFF):
def fetch(self):
print ('bbbbar')

bbb=Bar()
bbb()
输出————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

111
calll1111

 

这里讲对象加 ()  执行之后就不会报错了,输出了call方法的执行结果

*********************************************************************************************************************************************************************************************************

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 










posted on 2018-06-01 10:09  JuGooLar  阅读(190)  评论(0编辑  收藏  举报

导航