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 相关文章推荐
Python实现竖排打印传单手机号码易撕条
Mar 16 Python
Django框架下在URLconf中指定视图缓存的方法
Jul 23 Python
django轻松使用富文本编辑器CKEditor的方法
Mar 30 Python
Pycharm学习教程(3) 代码运行调试
May 03 Python
python通过socket实现多个连接并实现ssh功能详解
Nov 08 Python
python 限制函数调用次数的实例讲解
Apr 21 Python
浅谈Tensorflow模型的保存与恢复加载
Apr 26 Python
python smtplib模块自动收发邮件功能(一)
May 22 Python
python 平衡二叉树实现代码示例
Jul 07 Python
深入了解Python在HDA中的应用
Sep 05 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
Apr 07 Python
python 用pandas实现数据透视表功能
Dec 21 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防止网站被刷新的方法汇总
2014/12/01 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
2015/09/30 PHP
php对接java现实加签验签的实例
2016/11/25 PHP
Zend Framework路由器用法实例详解
2016/12/11 PHP
PHP+Ajax无刷新带进度条图片上传示例
2017/02/08 PHP
详解PHP 7.4 中数组延展操作符语法知识点
2019/07/19 PHP
JavaScript 原型链学习总结
2010/10/29 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
jquery实现不包含当前项的选择器实例
2015/06/25 Javascript
模仿password输入框的实现代码
2016/06/07 Javascript
浅谈JS的基础类型与引用类型
2016/09/13 Javascript
关于 angularJS的一些用法
2017/11/29 Javascript
在angular 6中使用 less 的实例代码
2018/05/13 Javascript
vue.js中proxyTable 转发请求的实现方法
2018/09/20 Javascript
原生JS实现简单的无缝自动轮播效果
2018/09/26 Javascript
小程序实现层叠卡片滑动效果
2019/08/26 Javascript
vue实现在线预览pdf文件和下载(pdf.js)
2019/11/26 Javascript
[51:43]OG vs LGD 2018国际邀请赛淘汰赛BO3 第五场 8.26
2018/08/30 DOTA
[01:16:28]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第二场 2月23日
2021/03/11 DOTA
Python生成随机密码
2015/03/10 Python
讲解Python中的标识运算符
2015/05/14 Python
使用pdb模块调试Python程序实例
2015/06/02 Python
python入门教程 python入门神图一张
2018/03/05 Python
PyTorch中Tensor的拼接与拆分的实现
2019/08/18 Python
Python对接 xray 和微信实现自动告警
2019/09/17 Python
浅谈python输出列表元素的所有排列形式
2020/02/26 Python
介绍一下SQL中union,intersect和minus
2012/04/05 面试题
岗位职责风险防控
2014/02/18 职场文书
入股协议书
2014/04/14 职场文书
村党支部书记四风问题个人对照检查材料思想汇报
2014/10/06 职场文书
实习计划书范文
2015/01/16 职场文书
大专护理专业自荐信
2015/03/25 职场文书
文艺晚会开场白
2015/05/29 职场文书
古诗文之爱国名句(77句)
2019/09/24 职场文书
Redis高并发防止秒杀超卖实战源码解决方案
2021/11/01 Redis
Django框架之路由用法
2022/06/10 Python