python程序实例讲解_Python编程之属性和方法实例详解
本文实例讲述了Python编程中属性和方法使用技巧。分享给大家供大家参考。具体分析如下:
一、属性
在python中,属性分为公有属性和私有属性,公有属性可以在类的外部调用,私有属性不能在类的外部调用。公有属性可以是任意变量,私有属性是以双下划线开头的变量。
下面我们定义一个People类,它有一个公有属性name,和一个私有属性__age。
class People():
def __init(self):
self.name='张珊'
self.__age=24
我们创建一个People类的实例,P1,当我们调用它的私有属性__age时发现有如下错误。
>>> p1.__age
Traceback (most recent call last):
File "", line 1, in
p1.__age
AttributeError: 'People' object has no attribute '__age'
这就说明了私有属性不可以在类的外部使用。那么我们要想调用私有属性的值,就可以在类的内部通过定义一个方法来调用。
>>> class People():
def __init__(self):
self.name='jack'
self.__age=23
def showinfo(self):
print(self.__age)
>>> p2=People()
>>> p2.showinfo()
23
可能有人会问,为什么加上双下划线的属性,我们就不可以在类的外部调用了呢?那么下面我们就探讨下python面向对象的私有机制。
Python中以双下划线开头的属性和方法,在被实例化后会自动在其名字前加_classname.因为名字被改变了,所以自然无法通过双下滑线开头的名字来访问,从而达到不可进入的目的。
我们可以通过实例名.__dict__来查看对象的属性集合。
Python中不同于其他面向对象的编程语言,python的设计哲学就是简单至上,因此如果你真的想要调用私有属性的话还是可以调用的。
二、方法
在python中方法分为公有方法、私有方法、类方法和静态方法。
下面我们看一个比较完整的例子
#!/usr/bin/python
#coding:utf-8
__author__ = 'MXi4oyu'
class People():
def __init__(self):
self.name='张珊'
self.__age=23
def fun1(self):
#共有方法可以在类的外部进行调用
#可以通过对象名.方法名来调用
print("共有方法")
def __fun2(self):
#私有方法不能在类的外部进行调用
#可以在类的其他方法中调用私有方法
print("私有方法")
def funcshow(self):
self.__fun2()
@classmethod
#类方法要加上@classmethod修饰器,类方法可以通过类名.方法名进行调用
def fun3(self):
print("类方法")
@staticmethod
#静态方法需要加上@staticmethod修饰器,静态方法不需要加self,
#同样可以通过类名.方法名调用
def fun4():
print("静态方法")
if __name__=='__main__':
p1=People()
p1.fun1()
p1.funcshow()
People.fun3()
People.fun4()
希望本文所述对大家的Python程序设计有所帮助。
python程序实例讲解_Python编程之属性和方法实例详解相关推荐
- python100例详解-Python编程之属性和方法实例详解
本文实例讲述了Python编程中属性和方法使用技巧.分享给大家供大家参考.具体分析如下: 一.属性 在python中,属性分为公有属性和私有属性,公有属性可以在类的外部调用,私有属性不能在类的外部调用 ...
- 粒子群优化算法和python代码_Python编程实现粒子群算法(PSO)详解
1 原理 粒子群算法是群智能一种,是基于对鸟群觅食行为的研究和模拟而来的.假设在鸟群觅食范围,只在一个地方有食物,所有鸟儿看不到食物(不知道食物的具体位置),但是能闻到食物的味道(能知道食物距离自己位 ...
- python中列表的sort方法_python中列表的sort方法使用详解
内容简介:python中列表的sort方法使用详解 一.基本形式 列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的. 排序,数字.字符 ...
- python类中的属性分为类属性和实例属性两种_python中类和实例如何绑定属性与方法示例详解...
前言 python类与实例的方法的调用中觉得云里雾里,思考之后将自己的想法记录下,一来加深自己理解,巩固自己记忆,而来帮助一些想要学习python的朋友理解这门抽象的语言,由于Python是动态语言, ...
- python json转换字典_Python json转字典字符方法实例解析
josn基本操作 1.导入import json 2.字典转json:json.dumps(dict,ensure_ascii=False),加,ensure_ascii=False转换之后无中文乱码 ...
- python工具安装教程_Python 开发工具PyCharm安装教程图文详解(新手必看)
一.概念理解1.json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串) (1)json.dumps()函数是将一个Python数据类型列表进行jso ...
- python的threading库_python标准库介绍——31 threading 模块详解
threading 模块 (可选) ``threading`` 模块为线程提供了一个高级接口, 如 [Example 3-1 #eg-3-1] 所示. 它源自 Java 的线程实现. 和低级的 ``t ...
- python箱线图_Python 箱线图 plt.boxplot() 参数详解
Python 绘制箱线图主要用 matplotlib 库里 pyplot 模块里的 boxplot() 函数. plt.boxplot() 参数详解 plt.boxplot(x, # 指定要绘制箱线图 ...
- python中mat函数_python matplotlib中的subplot函数使用详解
python里面的matplotlib.pylot是大家比较常用的,功能也还不错的一个包.基本框架比较简单,但是做一个功能完善且比较好看整洁的图,免不了要网上查找一些函数.于是,为了节省时间,可以一劳 ...
最新文章
- SpringBoot中@ControlAdvice的使用
- 科学家研发出“读心术”,直接将脑电波翻译成文本,错误率低至 3%
- 软考计算机网络原理之IP计算问题汇总
- echarts - geo 绘制无数据区域的区域
- img 光盘映像文件已损坏_系统封装||还在用MSDN下载Windows镜像文件?你out了,用这个就可以了...
- 命令 / Linux / netstat 详解
- J2EE中在web.xml异常页面跳转
- android onscrolllistener判断到底部,判断RecyclerView是否滑动到底部
- SIGCOMM 2010 论文 paper list
- MATLAB中特殊图形的绘制
- 理解js的prototype原型对象
- 揭秘ASP.NET 2.0之Page.Eval
- MultiDesk 是一个选项卡(TAB标签)方式的远程桌面连接 (Terminal Services Client)。
- 反证法与归谬法的区别
- mac原生壁纸,拿走不谢!
- Web前端开发技术课程大作业——南京旅游景点介绍网页代码html+css+javascript
- 安卓开发笔记①:利用高德地图API进行定位、开发电子围栏、天气预报、轨迹记录、搜索周边(位置)
- nps内网穿透服务器搭建教程(阿里云)-小宇特详解
- 【物联网实训项目】------(五)家庭智慧安防系统之智能监控
- [经验分享] 覃超算法训练营学习笔记
热门文章
- 【Flink】Flink 流计算 容错 source节点进行数据容错
- 1.1.0-简介-P5-时间、时钟和事件顺序
- 20-30-010-安装-kafka-manager
- 【Kafka】Failed to send data to Kafka: Failed to update metadata after 60000 ms
- 【Docker】docker bash: sudo: command not found
- 【Flink】Flink on RocksDB 参数调优指南
- 【Mac】mac下使用 找不到或无法加载主类
- java批量插入PostgreSql
- mysql的查询结果ResultSet处理
- synchronized与锁升级