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将人民币转换大写的脚本代码
Feb 10 Python
Python中字典的基本知识初步介绍
May 21 Python
Python基于回溯法子集树模板解决0-1背包问题实例
Sep 02 Python
Python实现批量压缩图片
Jan 25 Python
详解Python的三种可变参数
May 08 Python
python NumPy ndarray二维数组 按照行列求平均实例
Nov 26 Python
jupyter notebook oepncv 显示一张图像的实现
Apr 24 Python
详解Flask前后端分离项目案例
Jul 24 Python
Python reques接口测试框架实现代码
Jul 28 Python
Python调用jar包方法实现过程解析
Aug 11 Python
python自动提取文本中的时间(包含中文日期)
Aug 31 Python
python如何将mat文件转为png
Jul 15 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
phpfans留言版用到的install.php
2007/01/04 PHP
解析curl提交GET,POST,Cookie的简单方法
2013/06/29 PHP
PHP JSON出错:Cannot use object of type stdClass as array解决方法
2014/08/16 PHP
PHP附件下载中文名称乱码的解决方法
2015/12/17 PHP
示例详解Laravel重置密码代码重构
2016/08/10 PHP
Laravel 框架路由原理与路由访问实例分析
2020/04/14 PHP
PHP获取当前时间不准确问题解决方案
2020/08/14 PHP
JavaScript 判断用户输入的邮箱及手机格式是否正确
2013/12/08 Javascript
使用js画图之饼图
2015/01/12 Javascript
jQuery+JSON实现AJAX二级联动实例分析
2015/12/18 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
2016/12/26 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
2016/12/31 Javascript
JavaScript中Math对象的方法介绍
2017/01/05 Javascript
解决给dom元素绑定click等事件无效问题的方法
2017/02/17 Javascript
微信小程序 实例开发总结
2017/04/26 Javascript
微信小程序引入VANT组件的方法步骤
2019/09/19 Javascript
vue项目,代码提交至码云,iconfont的用法说明
2020/07/30 Javascript
JavaScript实现多球运动效果
2020/09/07 Javascript
[02:28]DOTA2亚洲邀请赛 LGD战队巡礼
2015/02/03 DOTA
[01:03:09]完美世界DOTA2联赛PWL S2 Forest vs SZ 第二场 11.25
2020/11/26 DOTA
使用Python的Scrapy框架编写web爬虫的简单示例
2015/04/17 Python
详解Python开发中如何使用Hook技巧
2017/11/01 Python
Python编程argparse入门浅析
2018/02/07 Python
python3+mysql查询数据并通过邮件群发excel附件
2018/02/24 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
在VS2017中用C#调用python脚本的实现
2019/07/31 Python
Python range、enumerate和zip函数用法详解
2019/09/11 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
python opencv 实现对图像边缘扩充
2020/01/19 Python
Python交互环境下打印和输入函数的实例内容
2020/02/16 Python
香港优质食材和美酒专门店:FoodWise
2017/09/01 全球购物
小学教师的自我评价范例
2013/10/31 职场文书
教师岗位职责
2013/11/17 职场文书
中学教师教学工作总结
2015/08/13 职场文书
四年级作文之植物
2019/09/20 职场文书
Python Pandas 删除列操作
2022/03/16 Python