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实现SVN的目录周期性备份实例
Jul 17 Python
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
Nov 02 Python
Python3一行代码实现图片文字识别的示例
Jan 15 Python
Python读取txt内容写入xls格式excel中的方法
Oct 11 Python
Pandas分组与排序的实现
Jul 23 Python
python3读取csv文件任意行列代码实例
Jan 13 Python
Python列表倒序输出及其效率详解
Mar 04 Python
python pandas利用fillna方法实现部分自动填充功能
Mar 16 Python
Python Numpy中数据的常用保存与读取方法
Apr 01 Python
浅谈python 中的 type(), dtype(), astype()的区别
Apr 09 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
Nov 12 Python
python字符串拼接.join()和拆分.split()详解
Nov 23 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 替换模板变量实现步骤
2009/08/24 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
用js实现上传图片前的预览(TX的面试题)
2007/08/14 Javascript
默认让页面的第一个控件选中的javascript代码
2009/12/26 Javascript
document.getElementById方法在Firefox与IE中的区别
2010/05/18 Javascript
Javascript控制页面链接在新窗口打开具体方法
2013/08/16 Javascript
使用JS CSS去除IE链接虚线框的三种方法
2013/11/14 Javascript
Javascript四舍五入Math.round()与Math.pow()使用介绍
2013/12/27 Javascript
利用JQuery制作符合Web标准的QQ弹出消息
2014/01/14 Javascript
js中settimeout方法加参数
2014/02/28 Javascript
js网页滚动条滚动事件实例分析
2015/05/05 Javascript
函数window.open实现关闭所有的子窗口
2015/08/03 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
jQuery焦点图切换特效代码分享
2015/09/15 Javascript
微信js-sdk地理位置接口用法示例
2016/10/12 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(二)
2017/01/21 Javascript
防止重复发送 Ajax 请求
2017/02/15 Javascript
浅谈vuex的基本用法和mapaction传值问题
2019/11/08 Javascript
微信小程序调用后台service教程详解
2020/11/06 Javascript
vue实现树状表格效果
2020/12/29 Vue.js
python生成日历实例解析
2014/08/21 Python
python服务器端收发请求的实现代码
2014/09/29 Python
尝试使用Python多线程抓取代理服务器IP地址的示例
2015/11/09 Python
windows下python和pip安装教程
2018/05/25 Python
python中对_init_的理解及实例解析
2019/10/11 Python
TensorFlow实现保存训练模型为pd文件并恢复
2020/02/06 Python
荷兰和比利时时尚鞋店:Van Dalen
2018/04/23 全球购物
英国奢侈品牌时尚购物平台:Farfetch(支持中文)
2020/02/18 全球购物
正隆泰信息技术有限公司上机题
2012/06/14 面试题
信息科学与技术专业求职信范文
2014/02/20 职场文书
市政管理求职信范文
2014/05/07 职场文书
2014年纪检部工作总结
2014/11/12 职场文书
紧急迫降观后感
2015/06/15 职场文书
卖车协议书范文
2016/03/23 职场文书
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS