python中对类变量的访问形式_Python面向对象(二)类的创建与访问

下划线说明

头尾双下划线

例如__init__(),定义的是特殊方法,一般是系统定义名字

双下划线

以双下划线开头的变量为类的私有变量(private),只允许这个类本身访问,例如__var

单下划线

以单下划线开头的变量为保护类型的变量(protected),只允许这个类和其子类访问

Python不允许实例化对象访问类的私有数据,但是可以利用object._className__attr来访问属性,例如:

>>> class MyClass():

__var=10

>>> c=MyClass()

>>> c.__var

Traceback (most recent call last):

File "", line 1, in

c.__var

AttributeError: 'MyClass' object has no attribute '__var'

>>> c._MyClass__var

10

>>>

内置类属性

__dict__ : 类的属性(包含一个字典,由类的数据属性组成)

__doc__ :类的文档字符串

__name__: 类名

__module__: 类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module__ 等于 mymod)

__bases__ : 类的所有父类构成元素(包含了一个由所有父类组成的元组)

>>> class MyClass():

'这是类的文档'

publicVar=10

def __init__(self,varA,varB):

self.varA='aa'

self.varB='bb'

def displayVar(self):

print('varA =',self.varA)

print('varB =',self.varB)

print('publicVar=',MyClass.publicVar)

>>> MyClass.__doc__ # 类的文档字符串

'这是类的文档'

>>> MyClass.__name__ # 类名

'MyClass'

>>> MyClass.__module__ # 类定义所在的模块

'__main__'

>>> MyClass.__bases__ # 类的父类,默认所有类继承自object类

(,)

>>> MyClass.__dict__ # 类的属性,返回一个字典

mappingproxy({'__module__': '__main__', '__doc__': '这是类的文档', 'publicVar': 10, '__init__': , 'displayVar': , '__dict__': , '__weakref__': })

>>>

基本重载方法

可以在自己的类中重写方法

方法名

描述

__init__(self[,args..])

构造函数

__del__(self)

析构函数

__repr__(self)

转化为供解释器读取的形式

__str__(self)

将值转化为适于人阅读的形式

__cmp__ (self,x)

对象比较

对象销毁机制

Python 使用了引用计数这一简单技术来跟踪和回收垃圾,当一个对象没有被引用时就会被自动释放,但是释放并不是立即的,而是解释器在合适的时机将垃圾对象的内存回收。

>>> class MyClass():

def __del__(self):

print('delete this object')

def __init__(self):

print('init this object')

>>> c= MyClass() # 引用为1

init this object

>>> b=c # 引用为2

>>> d=b # 引用为3

>>> del c # 引用为2

>>> del b # 引用为1

>>> del d # 引用为0 准备释放内存

delete this object

>>>

利用内置函数访问属性

可以使用以下函数的方式来访问属性:

getattr(obj, name[, default]) : 访问对象的属性。

hasattr(obj,name) : 检查是否存在一个属性。

setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一-个新属性。

delattr(obj, name) : 删除属性。

hasattr(emp1, 'age') # 如果存在 'age' 属性返回 True。

getattr(emp1, 'age') # 返回 'age' 属性的值

setattr(emp1, 'age', 8) # 添加属性 'age' 值为 8

delattr(emp1, 'age') # 删除属性 'age'

# 属性名记得加单引号,否则会认为是一个与属性名同名的变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
单片微型计算机(MCU)经过多年的发展,在性能上有很大的进步,在型号上发展到上千种类,已经广泛应用于人类社会生活的各个领域。单片机课程已经成为高校计算机、自动化、测控以及电子信息工程等专业的重要课程。该课程是一门理论性和实践性都很强的课程,在实际教学,应将理论教学和实验教学紧密结合。学生在掌握理论知识之余,必须通过编写程序、设计硬件电路、仿真、调试这一系列的实验过程,才能更好地掌握单片机的结构原理和应用技能。随着单片机及其接口技术的飞速发展,目前市场上供应的编程仿真实验资源并不能完全满足高校单片机课程教与学的需求,构建低成本、技术先进、源码公开的单片机编程仿真实验系统,对我国单片机课程的教学和单片机领域人才的培养具有重要的现实意义。 本论文结合目前教学对单片机编程仿真实验系统的实际需求,采用模块化结构设计思想,精心设计和开发了单片机编程仿真实验系统。该单片机编程仿真实验系统由PC机端单片机编程控制软件和单片机编程仿真实验板两部分组成。PC机端的单片机编程控制软件可以自动检测到连接到单片机编程仿真实验板上的单片机,控制单片机编程器擦除、写入、读出、校验目标单片机ROM的程序,以十六进制文件(.HEX文件)格式显示在控制界面内;单片机仿真实验系统能够把写入单片机的程序实时地运行,并呈现实际运行效果。单片机编程控制软件和单片机仿真实验板组成一个完整的单片机编程仿真实验系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值