本文实例讲述了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 "", line 1, in

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编程之属性和方法实例详解相关推荐

  1. python100例详解-Python编程之属性和方法实例详解

    本文实例讲述了Python编程中属性和方法使用技巧.分享给大家供大家参考.具体分析如下: 一.属性 在python中,属性分为公有属性和私有属性,公有属性可以在类的外部调用,私有属性不能在类的外部调用 ...

  2. 粒子群优化算法和python代码_Python编程实现粒子群算法(PSO)详解

    1 原理 粒子群算法是群智能一种,是基于对鸟群觅食行为的研究和模拟而来的.假设在鸟群觅食范围,只在一个地方有食物,所有鸟儿看不到食物(不知道食物的具体位置),但是能闻到食物的味道(能知道食物距离自己位 ...

  3. python中列表的sort方法_python中列表的sort方法使用详解

    内容简介:python中列表的sort方法使用详解 一.基本形式 列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的. 排序,数字.字符 ...

  4. python类中的属性分为类属性和实例属性两种_python中类和实例如何绑定属性与方法示例详解...

    前言 python类与实例的方法的调用中觉得云里雾里,思考之后将自己的想法记录下,一来加深自己理解,巩固自己记忆,而来帮助一些想要学习python的朋友理解这门抽象的语言,由于Python是动态语言, ...

  5. python json转换字典_Python json转字典字符方法实例解析

    josn基本操作 1.导入import json 2.字典转json:json.dumps(dict,ensure_ascii=False),加,ensure_ascii=False转换之后无中文乱码 ...

  6. python工具安装教程_Python 开发工具PyCharm安装教程图文详解(新手必看)

    一.概念理解1.json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串) (1)json.dumps()函数是将一个Python数据类型列表进行jso ...

  7. python的threading库_python标准库介绍——31 threading 模块详解

    threading 模块 (可选) ``threading`` 模块为线程提供了一个高级接口, 如 [Example 3-1 #eg-3-1] 所示. 它源自 Java 的线程实现. 和低级的 ``t ...

  8. python箱线图_Python 箱线图 plt.boxplot() 参数详解

    Python 绘制箱线图主要用 matplotlib 库里 pyplot 模块里的 boxplot() 函数. plt.boxplot() 参数详解 plt.boxplot(x, # 指定要绘制箱线图 ...

  9. python中mat函数_python matplotlib中的subplot函数使用详解

    python里面的matplotlib.pylot是大家比较常用的,功能也还不错的一个包.基本框架比较简单,但是做一个功能完善且比较好看整洁的图,免不了要网上查找一些函数.于是,为了节省时间,可以一劳 ...

最新文章

  1. SpringBoot中@ControlAdvice的使用
  2. 科学家研发出“读心术”,直接将脑电波翻译成文本,错误率低至 3%
  3. 软考计算机网络原理之IP计算问题汇总
  4. echarts - geo 绘制无数据区域的区域
  5. img 光盘映像文件已损坏_系统封装||还在用MSDN下载Windows镜像文件?你out了,用这个就可以了...
  6. 命令 / Linux / netstat 详解
  7. J2EE中在web.xml异常页面跳转
  8. android onscrolllistener判断到底部,判断RecyclerView是否滑动到底部
  9. SIGCOMM 2010 论文 paper list
  10. MATLAB中特殊图形的绘制
  11. 理解js的prototype原型对象
  12. 揭秘ASP.NET 2.0之Page.Eval
  13. MultiDesk 是一个选项卡(TAB标签)方式的远程桌面连接 (Terminal Services Client)。
  14. 反证法与归谬法的区别
  15. mac原生壁纸,拿走不谢!
  16. Web前端开发技术课程大作业——南京旅游景点介绍网页代码html+css+javascript
  17. 安卓开发笔记①:利用高德地图API进行定位、开发电子围栏、天气预报、轨迹记录、搜索周边(位置)
  18. nps内网穿透服务器搭建教程(阿里云)-小宇特详解
  19. 【物联网实训项目】------(五)家庭智慧安防系统之智能监控
  20. [经验分享] 覃超算法训练营学习笔记

热门文章

  1. 【Flink】Flink 流计算 容错 source节点进行数据容错
  2. 1.1.0-简介-P5-时间、时钟和事件顺序
  3. 20-30-010-安装-kafka-manager
  4. 【Kafka】Failed to send data to Kafka: Failed to update metadata after 60000 ms
  5. 【Docker】docker bash: sudo: command not found
  6. 【Flink】Flink on RocksDB 参数调优指南
  7. 【Mac】mac下使用 找不到或无法加载主类
  8. java批量插入PostgreSql
  9. mysql的查询结果ResultSet处理
  10. synchronized与锁升级