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 相关文章推荐
在类Unix系统上开始Python3编程入门
Aug 20 Python
Python使用微信SDK实现的微信支付功能示例
Jun 30 Python
python逆向入门教程
Jan 15 Python
Django后台获取前端post上传的文件方法
May 28 Python
python矩阵转换为一维数组的实例
Jun 05 Python
Python解析、提取url关键字的实例详解
Dec 17 Python
Python CVXOPT模块安装及使用解析
Aug 01 Python
Python中的延迟绑定原理详解
Oct 11 Python
Python数据存储之 h5py详解
Dec 26 Python
Python流程控制语句的深入讲解
Jun 15 Python
Python将CSV文件转化为HTML文件的操作方法
Jun 30 Python
Python实现简单得递归下降Parser
May 02 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-fpm的两种进程管理模式详解
2013/06/03 PHP
php 根据url自动生成缩略图并处理高并发问题
2014/01/23 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
PHP通过GD库实现验证码功能示例
2019/02/23 PHP
疯掉了,尽然有js写的操作系统
2007/04/23 Javascript
javascript 节点遍历函数
2010/03/28 Javascript
使用js的replace()方法查找字符示例代码
2013/10/28 Javascript
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
javascript检查浏览器是否已经启用XX功能
2015/07/10 Javascript
jQuery中的each()详细介绍(推荐)
2016/05/25 Javascript
javascript回到顶部特效
2016/07/30 Javascript
AngularJS 工作原理详解
2016/08/18 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
2017/02/27 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
详解vue移动端日期选择组件
2018/02/22 Javascript
Vue中使用better-scroll实现轮播图组件
2020/03/07 Javascript
Python os模块学习笔记
2015/06/21 Python
python实现猜单词小游戏
2020/05/22 Python
tensorflow saver 保存和恢复指定 tensor的实例讲解
2018/07/26 Python
使用python实现快速搭建简易的FTP服务器
2018/09/12 Python
解决在pycharm中显示额外的 figure 窗口问题
2019/01/15 Python
python selenium firefox使用详解
2019/02/26 Python
python的内存管理和垃圾回收机制详解
2019/05/18 Python
Python 仅获取响应头, 不获取实体的实例
2019/08/21 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
2020/06/08 Python
vscode调试django项目的方法
2020/08/06 Python
css3 position fixed固定居中问题解决方案
2014/08/19 HTML / CSS
css实例教程 一款纯css3实现的超炫动画背画特效
2014/11/05 HTML / CSS
Ray-Ban雷朋奥地利官网:全球领先的太阳眼镜品牌
2020/10/12 全球购物
SQL Server面试题
2016/10/17 面试题
护士自我鉴定
2013/10/23 职场文书
会计专业毕业生自荐书
2014/06/25 职场文书
优秀团员主要事迹材料
2015/11/05 职场文书
Pytest中conftest.py的用法
2021/06/27 Python
Nginx配置文件详解以及优化建议指南
2021/09/15 Servers
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers