Python编程之属性和方法实例详解


Posted in Python onMay 19, 2015

本文实例讲述了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 "<pyshell#7>", line 1, in <module>
    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 相关文章推荐
win系统下为Python3.5安装flask-mongoengine 库
Dec 20 Python
django rest framework之请求与响应(详解)
Nov 06 Python
Python OpenCV处理图像之图像直方图和反向投影
Jul 10 Python
对python3 Serial 串口助手的接收读取数据方法详解
Jun 12 Python
python字符串中匹配数字的正则表达式
Jul 03 Python
python实现把二维列表变为一维列表的方法分析
Oct 08 Python
基于python使用tibco ems代码实例
Dec 20 Python
Django返回HTML文件的实现方法
Sep 17 Python
如何在scrapy中捕获并处理各种异常
Sep 28 Python
Python文件名匹配与文件复制的实现
Dec 11 Python
pytorch显存一直变大的解决方案
Apr 08 Python
利用Python将list列表写入文件并读取的方法汇总
Mar 25 Python
python实现提取百度搜索结果的方法
May 19 #Python
在Python中操作字符串之rstrip()方法的使用
May 19 #Python
Python映射拆分操作符用法实例
May 19 #Python
Python中的rjust()方法使用详解
May 19 #Python
python抓取百度首页的方法
May 19 #Python
Python递归遍历列表及输出的实现方法
May 19 #Python
Python中random模块用法实例分析
May 19 #Python
You might like
PHP读取txt文件的内容并赋值给数组的代码
2011/11/03 PHP
在PHP中设置、使用、删除Cookie的解决方法
2013/05/06 PHP
thinkphp3查询mssql数据库乱码解决方法分享
2014/02/11 PHP
php获取表单中多个同名input元素的值
2014/03/20 PHP
XENON基于JSON变种
2010/07/27 Javascript
js获取浏览器的可视区域尺寸的实现代码
2011/11/30 Javascript
JS 对输入框进行限制(常用的都有)
2013/07/30 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
2014/08/11 Javascript
gulp-htmlmin压缩html的gulp插件实例代码
2016/06/06 Javascript
AngularJS指令用法详解
2016/11/02 Javascript
tablesorter.js表格排序使用方法(支持中文排序)
2017/02/10 Javascript
Vue2.0设置全局样式(less/sass和css)
2017/11/18 Javascript
微信小程序picker组件简单用法示例【附demo源码下载】
2017/12/05 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
vue中实现在外部调用methods的方法(推荐)
2018/02/08 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
2018/11/20 Javascript
django中使用vue.js的要点总结
2019/07/07 Javascript
Node.js控制台彩色输出的方法与原理实例详解
2019/12/01 Javascript
js面试题之异步问题的深入理解
2020/09/20 Javascript
javascript实现时钟动画
2020/12/03 Javascript
[02:48]DOTA2超级联赛专访海涛:你们的选择没有错
2013/06/07 DOTA
python 正则表达式 概述及常用字符
2009/05/04 Python
python语言中with as的用法使用详解
2018/02/23 Python
python画柱状图--不同颜色并显示数值的方法
2018/12/13 Python
Python实现的矩阵转置与矩阵相乘运算示例
2019/03/26 Python
python中数据库like模糊查询方式
2020/03/02 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
2020/04/21 Python
Abbott Lyon官网:女士手表、珠宝及配件
2020/12/26 全球购物
艺术应用与设计个人的自我评价
2013/11/23 职场文书
业务员薪酬管理制度
2014/01/15 职场文书
文明班级建设方案
2014/05/15 职场文书
幼儿园保育员责任书
2014/07/22 职场文书
我们的节日元宵活动方案
2014/08/23 职场文书
个人四风问题整改措施思想汇报
2014/10/04 职场文书
考试后的感想
2015/08/07 职场文书
解析redis hash应用场景和常用命令
2021/08/04 Redis