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中私有函数调用方法解密
Apr 29 Python
python类:class创建、数据方法属性及访问控制详解
Jul 25 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
Jan 06 Python
python3.6.3转化为win-exe文件发布的方法
Oct 31 Python
Python实现多线程/多进程的TCP服务器
Sep 03 Python
Python并发concurrent.futures和asyncio实例
May 04 Python
Python Map 函数的使用
Aug 28 Python
pandas按照列的值排序(某一列或者多列)
Dec 13 Python
python中HTMLParser模块知识点总结
Jan 25 Python
python openpyxl模块的使用详解
Feb 25 Python
教你用Python爬取英雄联盟皮肤原画
Jun 13 Python
详解Golang如何实现支持随机删除元素的堆
Sep 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 一个比较完善的简单文件上传
2010/03/25 PHP
PHP APC的安装与使用详解
2013/06/13 PHP
解析数组非数字键名引号的必要性
2013/08/09 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
2015/08/31 PHP
windows8.1下Apache+Php+MySQL配置步骤
2015/10/30 PHP
php编程每天必学之表单验证
2016/03/01 PHP
Yii实现微信公众号场景二维码的方法实例
2020/08/30 PHP
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
JavaScript中清空数组的三种方法分享
2011/04/07 Javascript
input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
2013/04/02 Javascript
jquery 隐藏与显示tr标签示例代码
2014/06/06 Javascript
JavaScript中的splice()方法使用详解
2015/06/09 Javascript
js调出上下文菜单的实例
2015/12/17 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
2016/06/20 Javascript
javascript中BOM基础知识总结
2017/02/14 Javascript
Angular中使用$watch监听object属性值的变化(详解)
2017/04/24 Javascript
angular json对象push到数组中的方法
2018/02/27 Javascript
JS 使用 window对象的print方法实现分页打印功能
2018/05/16 Javascript
elementUI Vue 单个按钮显示和隐藏的变换功能(两种方法)
2018/09/04 Javascript
Vue render函数实战之实现tabs选项卡组件
2019/04/22 Javascript
vue store之状态管理模式的详细介绍
2019/06/13 Javascript
layui禁用侧边导航栏点击事件的解决方法
2019/09/25 Javascript
微信小程序实现锚点功能
2019/11/20 Javascript
Python中用format函数格式化字符串的用法
2015/04/08 Python
python操作mongodb根据_id查询数据的实现方法
2015/05/20 Python
python中偏函数partial用法实例分析
2015/07/08 Python
python安装mysql-python简明笔记(ubuntu环境)
2016/06/25 Python
PyQt5打开文件对话框QFileDialog实例代码
2018/02/07 Python
python中把元组转换为namedtuple方法
2020/12/09 Python
Spongelle官网:美国的创意护肤洗护品牌
2019/05/15 全球购物
民族团结先进个人材料
2014/02/05 职场文书
收银员岗位职责范本
2015/04/07 职场文书
机关单位保密工作责任书
2015/05/11 职场文书
Python爬虫基础之初次使用scrapy爬虫实例
2021/06/26 Python
Redis 操作多个数据库的配置的方法实现
2022/03/23 Redis