__init__构造函数 self.name = name # 属性, 实例变量,成员变量,字段 def sayhi()# 方法, 动态属性 私有属性不对外看到 前面加上__
class role(): # 传参数 def __init__(self,name,role,weapon,life_value=100,moneny=15000):
# 构造函数
# 实例化过程中做一些类的初始化工作
self.name = name
self.role = role
self.weapon = weapon
self.life_value = life_value
self.moneny = moneny
self.__heart = 'normal' # 私有属性 def shot(self): # 类的方法,功能(动态属性)
print("shotting") def got_shot(self):
print("on,%s got shoot..." % self.name) def buy_gun(self,gun_name):
print("%s just bought %s" %(self.name,gun_name))
self.weapon = gun_name b1 = role('mike','police','AK47') print(b1.name)
print(b1.__heart) # 私有属性不对外公开
'''
mike
Traceback (most recent call last):
File "C:/Users/Administrator/PycharmProjects/ss/SSS/day6/私有属性1.py", line 32, in <module>
print(b1.__heart)
AttributeError: 'role' object has no attribute '__heart'
'''
在内部方法使用
class role(): # 传参数 def __init__(self,name,role,weapon,life_value=100,moneny=15000):
# 构造函数
# 实例化过程中做一些类的初始化工作
self.name = name
self.role = role
self.weapon = weapon
self.life_value = life_value
self.moneny = moneny
self.__heart = 'normal' # 私有属性 def shot(self): # 类的方法,功能(动态属性)
print("shotting")
print("私有属性", self.__heart)
self.__heart = 'dddd' print("私有属性", self.__heart) def got_shot(self):
print("on,%s got shoot..." % self.name) def buy_gun(self,gun_name):
print("%s just bought %s" %(self.name,gun_name))
self.weapon = gun_name b1 = role('mike','police','AK47') print(b1.shot()) '''
shotting
私有属性 normal
私有属性 dddd
None
'''
如果想强制对外能访问
class role(): # 传参数 def __init__(self,name,role,weapon,life_value=100,moneny=15000):
# 构造函数
# 实例化过程中做一些类的初始化工作
self.name = name
self.role = role
self.weapon = weapon
self.life_value = life_value
self.moneny = moneny
self.__heart = 'normal' # 私有属性 def shot(self): # 类的方法,功能(动态属性)
print("shotting")
print("私有属性", self.__heart)
self.__heart = 'dddd' print("私有属性", self.__heart) # 定义一个方法用来对外访问
def show_heart(self):
return self.__heart def got_shot(self):
print("on,%s got shoot..." % self.name) def buy_gun(self,gun_name):
print("%s just bought %s" %(self.name,gun_name))
self.weapon = gun_name b1 = role('mike','police','AK47') print(b1.show_heart()) # normal
强制访问私有属性
class role(): # 传参数 def __init__(self,name,role,weapon,life_value=100,moneny=15000):
# 构造函数
# 实例化过程中做一些类的初始化工作
self.name = name
self.role = role
self.weapon = weapon
self.life_value = life_value
self.moneny = moneny
self.__heart = 'normal' # 私有属性 def shot(self): # 类的方法,功能(动态属性)
print("shotting") def got_shot(self):
print("on,%s got shoot..." % self.name) def buy_gun(self,gun_name):
print("%s just bought %s" %(self.name,gun_name))
self.weapon = gun_name b1 = role('mike','police','AK47') # 强制访问私有属性
print(b1._role__heart) b1._role__heart # normal
私有属性 继承重构方法不能访问 父类的私有属性
class Foo(object): def __init__(self, name):
self.__name = name def f1(self):
print(self.__name) class Bar(Foo): def f2(self):
print(self.__name) obj = Bar("mike")
obj.f2() '''
Traceback (most recent call last):
File "C:/Users/Administrator.QH-20170325TNQR/PycharmProjects/SSSSS/SS/day7/S13 面向对象/私有属性 继承1.py", line 21, in <module>
obj.f2()
File "C:/Users/Administrator.QH-20170325TNQR/PycharmProjects/SSSSS/SS/day7/S13 面向对象/私有属性 继承1.py", line 18, in f2
print(self.__name)
AttributeErr
只有父类自己才能访问
class Foo(object): def __init__(self, name):
self.__name = name def f1(self):
print(self.__name) class Bar(Foo): def f2(self):
print(self.__name) obj = Bar("mike")
obj.f1() # mike