属性访问
类属性与对象属性
在类中定义的名字,都是类的属性,细说的话,类有两种属性:数据属性和函数属性,可以通过__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