python-面向对象属性的访问与self的理解
2024-10-20 15:58:35
属性访问
类属性与对象属性
在类中定义的名字,都是类的属性,细说的话,类有两种属性:数据属性和函数属性,可以通过__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('小王','榴莲')
最新文章
- Nginx在线服务状态下平滑升级或新增模块的详细操作
- Git撤销提交
- java怎么建立JAVA工程项目?
- DP:Space Elevator(POJ 2392)
- How to delete expired archive log files using rman?
- chrome调试js工具的使用
- 从robots.txt開始网页爬虫之旅
- mapreduce (五) MapReduce实现倒排索引 修改版 combiner是把同一个机器上的多个map的结果先聚合一次
- 更改navigationController push和pop界面切换动画
- ThinkPHP中的CURD操作
- SQL Server AlwaysOn中的几个误区
- TypeUtils -- Object 转为 强类型
- 《java入门第一季》之参数引用
- vue-cli —— 项目打包及一些注意事项
- flask No such command ";init-db";.
- DOM 操作成本究竟有多高,HTML、CSS构建过程 ,从什么方向出发避免重绘重排)
- BZOJ1022[SHOI2008]小约翰的游戏——anti-SG(反尼姆博弈)
- COGS.1901.[模板][国家集训队2011]数颜色(带修改莫队)
- [LeetCode] 339. Nested List Weight Sum_Easy tag:DFS
- 使用angular-cli脚手架快速搭建项目
热门文章
- Windows Server体验之升级安装
- Beats: 使用 Filebeat 进行日志结构化
- 在 Kubernetes 容器集群,微服务项目最佳实践
- shell分割字符串并赋值给变量
- 天翼云上新增IP备案具体操作步骤
- ELK基于ElastAlert实现日志的微信报警 ---docker环境
- OpenJudge 1.5.35:求出e的值
- 2022.9.10-2022.9.12 Java第一次课总结
- FluentValidation 验证(一):WebApi 中使用 基本使用
- 关于多个 Kubernetes 集群指标的采集操作