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字符串的encode与decode研究心得乱码问题解决方法
Mar 23 Python
Python对小数进行除法运算的正确方法示例
Aug 25 Python
使用Python实现BT种子和磁力链接的相互转换
Nov 09 Python
python中的闭包函数
Feb 09 Python
python实现Decorator模式实例代码
Feb 09 Python
python判断设备是否联网的方法
Jun 29 Python
python实现图片九宫格分割
Mar 07 Python
python判断一个对象是否可迭代的例子
Jul 22 Python
python3图片文件批量重命名处理
Oct 31 Python
python基于socket实现的UDP及TCP通讯功能示例
Nov 01 Python
pytorch数据预处理错误的解决
Feb 20 Python
Python super()函数使用及多重继承
May 06 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
html a标签-超链接中confirm方法使用介绍
2013/01/04 Javascript
input输入框的自动匹配(原生代码)
2013/03/19 Javascript
javascript实现框架高度随内容改变的方法
2015/07/23 Javascript
js+css实现文字散开重组动画特效代码分享
2015/08/21 Javascript
AngularJS实现表格的增删改查(仅限前端)
2017/07/04 Javascript
在knockoutjs 上自己实现的flux(实例讲解)
2017/12/18 Javascript
详解vuex的简单使用
2018/03/12 Javascript
微信小程序时间控件picker view使用详解
2018/12/28 Javascript
react项目如何使用iconfont的方法步骤
2019/03/13 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
2019/04/19 Javascript
JS定义函数的几种常用方法小结
2019/05/23 Javascript
bootstrap 日期控件 datepicker被弹出框dialog覆盖的解决办法
2019/07/09 Javascript
微信小程序向Java后台传输参数的方法实现
2020/12/10 Javascript
实例解析Python设计模式编程之桥接模式的运用
2016/03/02 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
2018/01/11 Python
Python中判断输入是否为数字的实现代码
2018/05/26 Python
OpenCV搞定腾讯滑块验证码的实现代码
2019/05/18 Python
python的re模块使用方法详解
2019/07/26 Python
Python 点击指定位置验证码破解的实现代码
2019/09/11 Python
Python 实现自动获取种子磁力链接方式
2020/01/16 Python
python IDLE添加行号显示教程
2020/04/25 Python
python函数调用,循环,列表复制实例
2020/05/03 Python
python 使用raw socket进行TCP SYN扫描实例
2020/05/05 Python
Python调用shell cmd方法代码示例解析
2020/06/18 Python
webapp字号大小跟随系统字号大小缩放的示例代码
2018/12/26 HTML / CSS
来自美国主售篮球鞋的零售商店:KICKSUSA
2017/11/28 全球购物
水上运动奥特莱斯:Wasterports Outlet
2018/08/08 全球购物
我想声明一个指针并为它分配一些空间, 但却不行。这些代码有什么 问题?char *p; *p = malloc(10);
2016/10/06 面试题
餐厅采购员岗位职责
2014/03/06 职场文书
工程售后服务承诺书
2014/05/21 职场文书
同志主要表现材料
2014/08/21 职场文书
2014年小学数学教师工作总结
2014/12/03 职场文书
钱学森电影观后感
2015/06/04 职场文书
新郎父母婚礼致辞
2015/07/27 职场文书
2015年文秘个人工作总结
2015/10/14 职场文书
JavaScript数组reduce()方法的语法与实例解析
2021/07/07 Javascript