考察下面这个简单的例子:

class Person(object):

def __init__(self):

self._name = None

def get_name(self): # 这是方法

if not self._name:

raise RuntimeError('no name')

return self._name

def set_name(self, name): # 这还是方法

if not name:

raise ValueError('name should not be empty')

self._name = name

# 定义了名为 name 的属性

name = property(get_name, set_name)

我们可以使用方法或属性来操作:

>>> p = Person()

>>> p.name

...

RuntimeError: no name

可以看到用属性的方式访问,还是调用了 get_name() 方法,这和:

>>> p.get_name()

...

RuntimeError: no name

是一样的。同样,我们使用方法和属性两种方式操作:

>>> p.name = 'mike'

>>> p.get_name()

'mike'

>>> p.name

'mike'

>>> p.name = 'peter'

>>> p.name

'peter'

>>> p.name = ''

...

ValueError: name should not be empt

可以看到,实际上为 p.name 赋值时,调用了 set_name() 方法。

python方法调用名字不一样_python属性访问和方法调用是不是不一样相关推荐

  1. 第7.26节 Python中的@property装饰器定义属性访问方法getter、setter、deleter 详解

    第7.26节 Python中的@property装饰器定义属性访问方法getter.setter.deleter 详解 一.    引言 Python中的装饰器在前面接触过,老猿还没有深入展开介绍装饰 ...

  2. python中的方法和函数的区别_python中函数与方法的区别?

    Python中函数不是方法,主要有以下区别: 首先,从分类的角度来分析二者的区别 (1)函数的分类: 内置函数:python内嵌的一些函数. 匿名函数:一行代码实现一个函数功能. 递归函数:自己调用自 ...

  3. C++和Java的属性访问和方法调用 效率比较

    属性访问----C++快于Java JVM访问对象属性时(字节码OP_IGET_/OP_SGET_),会先通过属性名字字符串去查ClassObject元数据中属性的偏移(通过属性名字符串找到Class ...

  4. python函数和类的区别_Python中类中的方法还有区别?

    上一篇,我们讲到Python类中的属性是有区别的,爱思考的小伙伴们可能就会问了,Python中的方法是不是也有区别呢?是的,而且Python中的方法区别更大,让我们来看看吧~ Python类中的三种方 ...

  5. Python学习笔记(八)—— 私有属性、私有方法、伪私有

    在Python中,以下划线开头的变量名和方法名有特殊的含义,尤其在是在类的定义中.用下划线作为变量名和方法名的前缀和后缀来表示类的特殊成员. _xxx:这样的对象叫做保护成员,只有类对象和子类对象能访 ...

  6. python函数的使用方法_百度资讯搜索_python函数的使用方法

    金生水起程序猿 2020年11月22日 11:23函数语法格式及调用参数:默认值.元组和字典可变参数的使用全局变量和局部变量作用域,局部变量如何升级为全局变量函数是可重复使用的,实现单一功能的代码块. ...

  7. python通过什么对象连接数据库步骤_Python连接MySQL数据库方法介绍(超详细!手把手项目案例操作)...

    本文涉及到的开发环境:操作系统 Windows 10 数据库 MySQL 8.0 Python 3.7.2 pip 19.0.3 两种方法进行数据库的连接分别是PyMySQL和mysql.connec ...

  8. python和c语言相通吗_python和C语言互相调用的几种方式

    1 2 3 4 5 6 7 8 9 版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖.如要转贴,必须注明原文网址 http://www.cnblogs.com/Colin-Cai/p/75 ...

  9. 关于学习Python的一点学习总结(46->属性访问)

    86.属性访问 1.__getattr__(self,name):定义当用户试图获取一个不存在的属性时的行为 2.__getattribute__(self,name):定义当该类的属性被访问时的行为 ...

最新文章

  1. 腾讯 AI Lab 开源业内最大规模多标签图像数据集
  2. 用C#制作新闻阅读器(电脑报2005年3月14日 第10期)
  3. Chrome开发者工具详解(2)-Network面板
  4. Python数据结构与算法—队列
  5. 基于python的界面自动化测试-基于Python语言的自动化测试实战第二章(上)
  6. 对象池commons-pool
  7. 关于颜色值透明度的设置
  8. php上传文件程序,php 文件上传程序(二款简单文件上传程序)_PHP教程
  9. 百度SEO站群自采集壁纸源码小韩美化版
  10. python中连续两个小于号_Python语言描述最大连续子序列和
  11. src refspec main does not match any
  12. SPI Nor Flash在Linux下调试
  13. 【论文】 各高校的毕业论文的Latex模板链接
  14. [神经网络]计算量GFLOPS和参数量#Params以及感受野计算
  15. 双向TVS的符号及几个参数问题?
  16. 最新王通《搜索排名引爆点》课值得学习吗
  17. 一二线城市知名 IT 互联网公司名单公布!
  18. Spring Boot入门教程(三十七):支付宝集成-手机网站支付
  19. 微信小程序开发日记1
  20. AI视频智能平台EasyCVR设备录像出现无法播放现象的问题修复

热门文章

  1. 1.2.3 ABCDE类地址
  2. 长连接 、短连接、心跳机制与断线重连
  3. 苹果电脑关于网络参数的查询
  4. android 禁用手机自带的返回键
  5. Git Flow 用法
  6. 作业帮上线五款素养课,素质教育成转型方向之一
  7. 使用华为手机,要记得调整这些设置,能大大提升性能
  8. java基础-日期处理
  9. js中的数组方法以及循环数组的方法
  10. 【排障】tomact未能看到网页