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通过opencv实现批量剪切图片
Nov 13 Python
django上传图片并生成缩略图方法示例
Dec 11 Python
python 实现判断ip连通性的方法总结
Apr 22 Python
Numpy 将二维图像矩阵转换为一维向量的方法
Jun 05 Python
python 从csv读数据到mysql的实例
Jun 21 Python
Tensorflow 实现修改张量特定元素的值方法
Jul 30 Python
Django模板语言 Tags使用详解
Sep 09 Python
python实现LRU热点缓存及原理
Oct 29 Python
Python使用ElementTree美化XML格式的操作
Mar 06 Python
浅谈Django前端后端值传递问题
Jul 15 Python
python 实现学生信息管理系统的示例
Nov 28 Python
pandas求平均数和中位数的方法实例
Aug 04 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
如何开发一个虚拟域名系统
2006/10/09 PHP
php日期转时间戳,指定日期转换成时间戳
2012/07/17 PHP
php阻止页面后退的方法分享
2014/02/17 PHP
JavaScript 关键字屏蔽实现函数
2009/08/02 Javascript
js delete 用法(删除对象属性及变量)
2014/08/24 Javascript
jQuery制作效果超棒的手风琴折叠菜单
2015/04/03 Javascript
用JavaScript实现页面重定向功能的教程
2015/06/04 Javascript
JavaScript验证Email(3种方法)
2015/09/21 Javascript
浅谈Javascript中substr和substring的区别
2015/09/30 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
2015/12/13 Javascript
JavaScript基本语法学习教程
2016/01/14 Javascript
ES6入门教程之Class和Module详解
2017/05/17 Javascript
vue自定义移动端touch事件之点击、滑动、长按事件
2018/07/10 Javascript
node.js微信小程序配置消息推送的实现
2019/02/13 Javascript
微信小程序 WXML节点信息查询详解
2019/07/29 Javascript
详解Python中内置的NotImplemented类型的用法
2015/03/31 Python
MySQL最常见的操作语句小结
2015/05/07 Python
Python爬虫:通过关键字爬取百度图片
2017/02/17 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
Pandas DataFrame数据的更改、插入新增的列和行的方法
2019/06/25 Python
Python笔记之观察者模式
2019/11/20 Python
使用pygame写一个古诗词填空通关游戏
2019/12/03 Python
Python实现图像去噪方式(中值去噪和均值去噪)
2019/12/18 Python
Python random模块制作简易的四位数验证码
2020/02/01 Python
python logging设置level失败的解决方法
2020/02/19 Python
python判断正负数方式
2020/06/03 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
2020/12/03 Python
前端隐藏出边界内容的实现方法
2016/04/14 HTML / CSS
荷兰和比利时时尚鞋店:Van Dalen
2018/04/23 全球购物
大学生学习自我评价
2014/01/13 职场文书
电力培训心得体会
2014/09/02 职场文书
学校领导班子四风对照检查材料
2014/09/27 职场文书
简易离婚协议书范本2014
2014/10/15 职场文书
检讨书怎么写
2015/05/07 职场文书
少先队工作总结2015
2015/05/13 职场文书
2015年秋学期教研工作总结
2015/10/14 职场文书