当前位置 博文首页 > m0_51723227的博客:02私有属性
(即不希望被访问到的属性)
模式: __ 属性名 __ 方法名
eg:
class Women:
def __init__(self,name):
self.name = name
self.__age = 18
def secret(self):
print("%s不希望别人看到她的年龄是%d岁"%(self.name,self.__age))
xiaofang = Women("小芳")
print(xiaofang.__age)
结果:
AttributeError:
'Women' object has no attribute '__age
结果看到不能调用,因为是私有属性。
class Women:
def __init__(self,name):
self.name = name
self.__age = 18
def secret(self):
print("%s不希望别人看到她的年龄是%d岁"%(self.name,self.__age))
xiaofang = Women("小芳")
print(xiaofang.secret())
结果:
小芳不希望别人看到她的年龄是18岁
None
保存在内部的私有属性可以访问
下面是私有方法:
class Women:
def __init__(self,name):
self.name = name
self.__age = 18
def __secret(self):
print("%s不希望别人看到她的年龄是%d岁"%(self.name,self.__age))
xiaofang = Women("小芳")
print(xiaofang.__secret())
结果:
AttributeError
'Women' object has no attribute '__secret'
提示:在实际开发中一般不这样访问
eg:
class Women:
def __init__(self,name):
self.name = name
self.__age = 18
def __secret(self):
print("%s不希望别人看到她的年龄是%d岁"%(self.name,self.__age))
xiaofang = Women("小芳")
print(xiaofang._women__age)
print(xiaofang._Women__secret())
运行结果:
18
小芳不希望别人看到她的年龄是18岁
None
通过直接调用父类的公有方法间接*调用私有方法
class A:
def __init__(self,name):
self.name = name
self.__age = 18
def __secret(self):
print("%s才不会告诉你它的年龄是%d岁"%(self.name,self.__age))
def secret(self):
print("卧槽,年轻人不讲武德!竟然利用公有方法找私有方法")
self.__secret()
class B(A):
def hu(self):
print("你以为我找不到你?")
self.secret()
c = B("傻帽")
c.hu()
运行结果:
你以为我找不到你?
卧槽,年轻人不讲武德!竟然利用公有方法找私有方法
傻帽才不会告诉你它的年龄是18岁
新人创作,若有问题,欢迎大佬们的斧正
cs