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的Treq on Twisted来进行HTTP压力测试
Apr 16 Python
Python爬虫框架Scrapy实战之批量抓取招聘信息
Aug 07 Python
Python二叉搜索树与双向链表转换实现方法
Apr 29 Python
Python 中迭代器与生成器实例详解
Mar 29 Python
python 全局变量的import机制介绍
Sep 07 Python
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
Apr 22 Python
浅谈利用numpy对矩阵进行归一化处理的方法
Jul 11 Python
Tensorflow 同时载入多个模型的实例讲解
Jul 27 Python
详解python执行shell脚本创建用户及相关操作
Apr 11 Python
简单了解python中对象的取反运算符
Jul 01 Python
Python数据可视化图实现过程详解
Jun 12 Python
python 实现音频叠加的示例
Oct 29 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 反向排序和随机排序代码
2010/06/30 PHP
php使用正则表达式进行字符串搜索的方法
2015/03/23 PHP
Sample script that deletes a SQL Server database
2007/06/16 Javascript
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
JS版的date函数(和PHP的date函数一样)
2014/05/12 Javascript
jQuery 如何先创建、再修改、后添加DOM元素
2014/05/20 Javascript
推荐10 个很棒的 jQuery 特效代码
2015/10/04 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
2016/05/11 Javascript
JS图片等比例缩放方法完整示例
2016/08/03 Javascript
JavaScript prototype属性详解
2016/10/25 Javascript
bootstrap手风琴制作方法详解
2017/01/11 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
vue实现长图垂直居上 vue实现短图垂直居中
2017/10/18 Javascript
Angular 项目实现国际化的方法
2018/01/08 Javascript
利用Angular7开发一个Radio组件的全过程
2019/07/11 Javascript
vscode中eslint插件的配置(prettier配置无效)
2019/09/10 Javascript
JS中队列和双端队列实现及应用详解
2020/09/29 Javascript
python连接MySQL数据库实例分析
2015/05/12 Python
python实现识别相似图片小结
2016/02/22 Python
Python实现约瑟夫环问题的方法
2016/05/03 Python
scrapy爬虫完整实例
2018/01/25 Python
python 3.7.0 下pillow安装方法
2018/08/27 Python
Django 缓存配置Redis使用详解
2019/07/23 Python
python用requests实现http请求代码实例
2019/10/31 Python
Python django框架开发发布会签到系统(web开发)
2020/02/12 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
2020/03/28 Python
python 已知三条边求三角形的角度案例
2020/04/12 Python
html5视频播放_动力节点Java学院整理
2017/07/13 HTML / CSS
美国二手奢侈品寄售网站:TheRealReal
2016/10/29 全球购物
销售人员自我评价
2014/02/01 职场文书
学习全国两会精神心得体会范文
2014/03/17 职场文书
昆虫记读书笔记
2015/06/26 职场文书
小组口号霸气押韵
2015/12/24 职场文书
致毕业季:你如何做好自己的职业生涯规划书?
2019/07/01 职场文书
学习师德师风的心得体会(2篇)
2019/10/08 职场文书
FP-growth算法发现频繁项集——发现频繁项集
2021/06/24 Python