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设置tmpfs来加速项目的教程
Apr 17 Python
Python实现文件按照日期命名的方法
Jul 09 Python
浅析python中的分片与截断序列
Aug 09 Python
Python中函数及默认参数的定义与调用操作实例分析
Jul 25 Python
Python实现多条件筛选目标数据功能【测试可用】
Jun 13 Python
详解将Django部署到Centos7全攻略
Sep 26 Python
python 单线程和异步协程工作方式解析
Sep 28 Python
Django框架中间件定义与使用方法案例分析
Nov 28 Python
解决Python使用列表副本的问题
Dec 19 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
Mar 08 Python
python基础入门之字典和集合
Jun 13 Python
python使用BeautifulSoup 解析HTML
Apr 24 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控制网页过期时间的代码
2008/09/28 PHP
PHP统计目录下的文件总数及代码行数(去除注释及空行)
2011/01/17 PHP
php中用于检测一个地理IP地址是否可用的代码
2012/02/19 PHP
PHP 之Section与Cookie使用总结
2012/09/14 PHP
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
2014/06/10 PHP
php将文本文件转换csv输出的方法
2014/12/31 PHP
PHP简单字符串过滤方法示例
2016/09/04 PHP
PHP数组生成XML格式数据的封装类实例
2016/11/10 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
执行iframe中的javascript方法
2008/10/07 Javascript
jQuery实现长文字部分显示代码
2013/05/13 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
2015/04/05 Javascript
Juery解决tablesorter中文排序和字符范围的方法
2015/05/06 Javascript
javascript常用正则表达式汇总
2015/07/31 Javascript
总结AngularJS开发者最常犯的十个错误
2016/08/31 Javascript
js文件中直接alert()中文出来的是乱码的解决方法
2016/11/01 Javascript
浅谈angularjs $http提交数据探索
2017/01/20 Javascript
js图片放大镜效果实现方法详解
2020/10/28 Javascript
JS将unicode码转中文方法
2017/05/08 Javascript
vue实现通讯录功能
2018/07/14 Javascript
jQuery.validate.js表单验证插件的使用代码详解
2018/10/22 jQuery
layer的prompt弹出框,点击回车,触发确定事件的方法
2019/09/06 Javascript
vue与django集成打包的实现方法
2019/11/11 Javascript
解决vue的router组件component在import时不能使用变量问题
2020/07/26 Javascript
Python随机生成一个6位的验证码代码分享
2015/03/24 Python
Python实现进程同步和通信的方法
2018/01/02 Python
Python对象与引用的介绍
2019/01/24 Python
python NumPy ndarray二维数组 按照行列求平均实例
2019/11/26 Python
关于Pytorch MaxUnpool2d中size操作方式
2020/01/03 Python
Python如何读写字节数据
2020/08/05 Python
HTML5微信播放全屏问题的解决方法
2017/03/09 HTML / CSS
委托与事件是什么关系?为什么要使用委托
2014/04/18 面试题
女大学生自我鉴定
2013/12/09 职场文书
丧事主持词大全
2014/04/02 职场文书
重温入党誓词主持词
2015/06/29 职场文书
Python数据处理的三个实用技巧分享
2022/04/01 Python