面向对象编程
2022/3/2 9:15:35
本文主要是介绍面向对象编程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
面向对象编程
-
通过类获取一个对象的过程 - 实例化
-
类名()会自动调用类中的__init__方法
-
类和对象之间的关系?
- 类 是一个大范围 是一个模子 它约束了事务有哪些属性 但是不能约束具体的值
- 对象 是一个具体的内容 是模子的产物 它遵循了类的约束 同时给属性赋上具体的值
-
类有一个空间 存储的是定义在class中的所有名字
-
每一个对象又拥有自己的空间 通过对象名.__dict__就可以查看这个对象的属性和值
print(alex.name) # print(alex.dict['name']) 属性的查看
alex.name = 'alexsb' # 属性的修改
alex.money = 100 # 属性的增加
del alex.money # 属性的删除 -
练习类的创建和实例化
d = ['k':'v']
print(d,id(d))
d['k'] = 'vvvv'
print(d,id(d)) -
修改列表\字典中的某个值,或者是对象的某一个属性 都不会影响这个对象\字典\列表所在的内存空间
实例化所经历的步骤
1.类名() 之后的第一个事儿:开辟一块儿内存空间 2.调用__init__把空间的内存地址作为self参数传递到函数内部 3.所有的这一个对象需要使用的属性都需要和self关联起来 4.执行完init中的逻辑之后,self变量会自动的被返回到调用处(发生实例化的地方)
-
dog类 实现狗的属性 名字 品种 血量 攻击力 都是可以被通过实例化被定制的
class Dog():
def init(self,name,blood,aggr,kind):
self.dog_name = name
self.hp = blood
self.ad = aggr
self.kind = kind小白 = Dog('小白',5000,249,'柴犬') print(小白.dog_name) print(小白.__dict__)
-
对象/实例 = 类名() => 实例化的过程
-
对象的属性/实例变量
-
类中的方法(函数) 有一个必须传的参数 self 对象
-
hasattr getattr setattr delattr 反射
- 实例对象
- 类
- 本模块 sys.modules[name]
- 其他模块
if hasattr(obj,'name'):
getattr(obj,'name')
-
找到tbjx对象 的c类 实例化一个对象
obj = getattr(tbjx,'C')() -
找到tbjx对象 的c类 通过对c类这个对象使用反射取到area
print(getattr(tbjx.C,'area')) -
找到tbjx对象 的c类 实例化一个对象 对对象进行反射取值
obj = getattr(tbjx,'C')('赵海狗')
print(obj.name)
print(getattr(obj,'name')) -
一次执行多个函数
def func1():
print('in func1')func_lst = [f'func{i}' for i in range(1,5)] for func in func_lst: getattr(sys.modules[__name__],func)()
-
反射应用
class User:
user_list = [('login','登录'),('register','注册'),('save','存储')]def login(self): print('欢迎来到登录页面') def register(self): print('欢迎来到注册页面') def save(self): print('欢迎来到存储页面') # choose_dic = { # 1: User.login, # 2: User.register, # 3: User.save, # } while 1: choose = input('请输入序号:\n1:登录\n2:注册\n3:存储\n').strip() obj = User() # choose_dic[int(choose)](obj) getattr(obj,obj.user_list[int(choose)-1][0])() # getattr(obj,obj.user_list[int(1)-1][0])()
这篇关于面向对象编程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-102025 蛇年,J 人直播带货内容审核团队必备的办公软件有哪 6 款?
- 2025-01-10高效运营背后的支柱:文档管理优化指南
- 2025-01-10年末压力山大?试试优化你的文档管理
- 2025-01-10跨部门协作中的进度追踪重要性解析
- 2025-01-10总结 JavaScript 中的变体函数调用方式
- 2025-01-10HR团队如何通过数据驱动提升管理效率?6个策略
- 2025-01-10WBS实战指南:如何一步步构建高效项目管理框架?
- 2025-01-10实现精准执行:团队协作新方法
- 2025-01-10如何使用工具提升活动策划团队的工作效率?几个必备工具推荐
- 2025-01-10WiX 标签使用介绍:打造专业安装程序的利器