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过滤函数filter()使用自定义函数过滤序列实例
Aug 26 Python
Python argv用法详解
Jan 08 Python
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
Jul 02 Python
Python 多核并行计算的示例代码
Nov 07 Python
Python爬虫实现百度图片自动下载
Feb 04 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
Aug 10 Python
Python单例模式的四种创建方式实例解析
Mar 04 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
Apr 30 Python
windows支持哪个版本的python
Jul 03 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
Jul 28 Python
简述python四种分词工具,盘点哪个更好用?
Apr 13 Python
浅谈Python从全局与局部变量到装饰器的相关知识
Jun 21 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正则
2006/07/07 PHP
php 无法载入mysql扩展
2010/03/12 PHP
PHP访问Google Search API的方法
2015/03/05 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
2016/08/12 PHP
yii2简单使用less代替css示例
2017/03/10 PHP
javascript中window.event事件用法详解
2012/12/11 Javascript
在服务端(Page.Write)调用自定义的JS方法详解
2013/08/09 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
2015/09/26 Javascript
JS实现在状态栏显示打字效果完整实例
2015/11/02 Javascript
AngularJS教程之MVC体系结构详解
2016/08/16 Javascript
AngularJs bootstrap搭载前台框架——js控制部分
2016/09/01 Javascript
Bootstrap面板学习使用
2017/02/09 Javascript
js基于myFocus实现轮播图效果
2017/02/14 Javascript
Vue-Cli中自定义过滤器的实现代码
2017/08/12 Javascript
解决vue打包css文件中背景图片的路径问题
2018/09/03 Javascript
vue中各种通信传值方式总结
2019/02/14 Javascript
JQuery复选框全选效果如何实现
2020/05/08 jQuery
Vue watch响应数据实现方法解析
2020/07/10 Javascript
python益智游戏计算汉诺塔问题示例
2014/03/05 Python
漂亮的Django Markdown富文本app插件的实现
2019/01/02 Python
python移位运算的实现
2019/07/15 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
2020/05/12 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
2020/11/06 Python
pycharm实现猜数游戏
2020/12/07 Python
python如何用matplotlib创建三维图表
2021/01/26 Python
一款纯css3实现简单的checkbox复选框和radio单选框
2014/11/05 HTML / CSS
ziaja齐叶雅官方海外旗舰店:来自波兰的天然护肤品牌
2017/01/02 全球购物
匡威比利时官网:Converse Belgium
2017/04/13 全球购物
Boom手表官网:瑞典手表品牌,设计你的手表
2019/03/11 全球购物
酒店管理自荐信
2013/10/23 职场文书
仓库管理专业个人自我评价范文
2013/11/11 职场文书
公司领导推荐信
2013/11/12 职场文书
2014年国庆节活动总结
2014/08/26 职场文书
Mysql中 unique列插入重复值该怎么解决呢
2021/05/26 MySQL
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android
Golang流模式之grpc的四种数据流
2022/04/13 Golang