python 面向对象 私有属性
__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
python 面向对象 私有属性的更多相关文章
- python 面向对象 公有属性
公有属性定义 公有属性也叫作类变量 静态字段 class role(): # 传参数 # 公有属性都在这里定义 # 在类里直接定义的属性即是公有属性 nationality = 'JP' def ...
- python 基础——私有属性
私有属性 python 私有属性以两个下划线开头. python 私有属性只能在类内部访问,类外面访问会出错. python 私有属性之所以不能在外面直接通过名称来访问,其实质是因为 python 做 ...
- Python 之私有属性
概要 在基类的定义中,如果有些属性或者方法,我们希望隐藏它,从而不被子类继承,或者使其不被实例直接访问到,这时候可以用到私有属性的命名方法.尽管类的所有属性和方法在某种意义上说都是"暴露的& ...
- python -- 面向对象编程(属性、方法)
一.属性 对象的属性(attribute)也叫做数据成员(data member). 如果想指向某个对象的属性,可以使用格式: object.attribute 属性又分为:私有属性和公有属性. 私有 ...
- python面向对象--私有和继承
一. 私有属性和私有方法 应用场景 在实际开发中,对象的某些属性或方法可能只希望在对象的内部使用,而不希望在外部被访问到 私有属性 就是 对象 不希望公开的属性 (属性即类里面的变量) 私有方法 就是 ...
- python面向对象之类属性,实例属性
python中的属性分为类属性和实例属性,之前已经说过一些,这里主要是对类属性与实例属性的增删改查 首先是对类属性的增删改查,下面这个是对类属性的修改,在书写类时,已经对类属性occupation进行 ...
- Python面向对象之类属性类方法静态方法
类的结构 实例 使用面向对象开发时,第一步是设计类: 当使用 类名() 创建对象时,会自动执行以下操作: 1.为对象在内存中分配空间--创建对象: 2.为对象的属性 设置初始值--初始化方法(init ...
- Python面向对象 | 类属性
property property是一个装饰器函数,可以将一个方法伪装成属性,调用的时候可以不用加().@property被装饰的方法,是不能传参数的,因为它伪装成属性了. 装饰器的使用:在要装饰的函 ...
- Python面向对象之属性
属性的定义和调用 1,定义时,在普通方法的基础上添加@property装饰器 2,定义时,属性仅有一个self参数 3,调用时,无需括号 vim day7-8.py #!/usr/bin/python ...
随机推荐
- 深入理解bootstrap框架之第二章整体架构
标注下,正好最近关注前段框架 1. CSS-12栅格系统 把网页宽度均分为12等分(保留15位精度)——这是bootstrap的核心功能. 2.基础布局组件 包括排版.按钮.表格.布局.表单等等. 3 ...
- error:2014 Commands out of sync; you can't run this command now
如下错误: 分析原因: 前端ajax请求后台,共用同一个链接. 搜索别人的解决方案:http://blog.csdn.net/grass_ring/article/details/3499402 用m ...
- hadoop3.1.0 window win7 基础环境搭建
https://blog.csdn.net/wsh596823919/article/details/80774805 hadoop3.1.0 window win7 基础环境搭建 前言:在windo ...
- PHP大小写是否敏感问题
一.大小写敏感 1. 变量名区分大小写 所有变量均区分大小写,包括普通变量以及$_GET,$_POST,$_REQUEST,$_COOKIE,$_SESSION,$GLOBALS,$_SERVER,$ ...
- 监控之_nrpe
监控机上安装nagios插件和nrpe(nrpe添加为xinetd服务) 1.添加nagios用户 /usr/sbin/useradd nagios passwd nagios 2.安装nagio ...
- day7—直播内容(元昊老师著)
*******************************class animal(object): def __init__(self): self.is_handsome=True def e ...
- js 对象引用传值
1)当变量是一个对象(例如:{}或[]),使用 a = b = {} 这种形式传值的话,会变成会用传值,修改 a 时 b 会相应变化,修改 b 时 a 也一样会相应变化 var a = b = {}; ...
- 解决IE中img.onload失效的方法
解决IE中img.onload失效的方法 - CoffeeCat's IT Blog - IT博客 http://www.cnitblog.com/CoffeeCat/archive/2008/02/ ...
- pl/sql编程2-综合
案例1,要求:可以向book表添加书,并通过Java程序调用该过程1.1 创建表 ),publishHosuse )); 1.2 编写过程,无返回值 create or replace procedu ...
- Js debug模式
在代码中需要调试的地方,输入“debugger;”: