首页 > 编程语言 >python-面向对象属性的访问与self的理解

python-面向对象属性的访问与self的理解

时间:2022-09-28 18:34:07浏览次数:50  
标签:__ python self 面向对象 per1 dict print 属性

属性访问

类属性与对象属性

在类中定义的名字,都是类的属性,细说的话,类有两种属性:数据属性和函数属性,可以通过__dict__访问属性的值,比如Person1.__dict__['student'],但Python提供了专门的属性访问语法

print(Person1.student )# 访问数据属性,等同于Person1.__dict__['student']
print(Person1.run)  # 访问函数属性,等同于Person1.__dict__['run']

"""结果如下"""

周杰伦
<function Person1.run at 0x0000029E9DCDA950>

操作对象的属性也是一样

print(per1.name)  # print(per1.__dict__['name'])
print(per1.age)
res = per1.hobby = 'JayChou'  # 新增,等同于res=per1.__dict__['hobby']='JayChou'
print(res)
print(per1.hobby)
del per1.hobby  # 删除,等同于del per1.__dict__['hobby']


对象的名称空间里只存放着对象独有的属性,而对象们相似的属性是存放于类中的。对象在访问属性时,会优先从对象本身的__dict__中查找,未找到,则去类的__dict__中查找


self理解

  • self和对象指向同一个地址,可以认为self就是对象的引用
  • 在实例化对象时,self不需要开发者传参,Python自动将对象传递给self
  • self只有类中定义实例方法的时候才有意义,在调用的时候不必传入相应的参数,
  • 而是由解释器自动取指向
  • self的名字时可以更改的,可以定义成其他的名字,只是约定俗成的定义成了self
  • self指的是类实例对象本身
class Person:
    def __init__(self,pro):
        self.pro=pro
    def geteat(s,name,food):
        # print(self)
        print('self在内存中的地址%s'%(id(s)))
        print('%s喜欢吃%s,专业是:%s'%(name,food,s.pro))

zs=Person('心理学')
print('zs的内存地址%s'%(id(zs)))
zs.geteat('小王','榴莲')

标签:__,python,self,面向对象,per1,dict,print,属性
From: https://www.cnblogs.com/saury/p/16739183.html

相关文章

  • python-面向过程与函数式
    面向过程与函数式面向过程”面向过程“核心是“过程”二字,“过程”指的是解决问题的步骤,即先干什么再干什么......,基于面向过程开发程序就好比在设计一条流水线,是一种机......
  • 学习Python之变量
    一、变量的使用1、单个变量#变量aa="Helloworld1!"print(a)2、多个变量#变量aa="Helloworld1!"print(a)#变量bb="Helloworld2!"print(b)3、单个变量替换#变量aa="H......
  • Pythontext_3
    1实例一:输出每日一帖2importdatetime#导入日期时间表3#定义一个列表4mot=["今天星期一:\n坚持下去不是因为我很坚强,而是......
  • Python字节流,字符串,16进制相互转换
    python版本:Python3.81.字节流转成字符串2.字符串变字节流3.16进制字节流变成字节流4.16进制字符串变成字符串字节流 ......
  • 8、python正式篇 for循环和range的使用
    目录一、while循环补充说明1、死循环2、嵌套及全局标志位二、for...循环1、for...循环特点2、for...循环语法结构三、range方法1、什么是range2、不同版本python,range区别3......
  • Python 基础入门(六)
    Python基础入门(六)目录Python基础入门(六)一、while循环补充说明1、死循环2、嵌套及全局标志位二、流程控制之for循环for循环特点不同取值类型结果三、range方法一、while......
  • Python 变量,注释,字符串,快捷键
    Python学习其他语言通过括号,大括号表示各个模块所属关系,而python是通过缩进,所以缩进对于python尤为重要1.变量1.1和其它语言不同,python中变量不用提前声明,每个语句之后......
  • 基于Python的socket套接字的简单使用
    socket:进行应用程序之间的网络信息交互的工具几乎市面上所有具有网络通讯功能的软件,底层都使用了socket两个进程,分别开启sokcet服务,使用scoket可以在进程间进行通讯......
  • 使用Python的Win32api接口实现后台的键鼠模拟的消息模拟
    importtimeimportwin32apiimportwin32conimportwin32guiclassVirtual_Keyboard(object):def__init__(self,hwnd):self.hwnd=hwnds......
  • Python第四章实例、实战
    实例01  实例02  实例03  实例04  实例05    实例06    实例07    实例08    实例09    实例10......