当前位置: 首页 > news >正文

面向对象初级

    面向对象初级:

    1.面向对象三大特征:封装  继承   多态    self含义:  指向实例对象本身,让实例能够访问类中的属性和方法

    2.类和对象的创建:    

类和对象的创建(登录注册功能)
class User:def __init__(self,name,pwd):self.name = nameself.pwd = pwdclass User_Mannager():def __init__(self):self.user_list = []#存放User类对象def regist(self):"""用户注册"""while True:name = input('输入用户名N(退出):')if name.upper() == 'N':breakfor item in self.user_list:if item.name == name:print('用户名已存在,重新输入')flag = Truebreakelse:pwd = input('输入密码:')self.user_list.append(User(name,pwd))print('注册成功')returncontinuedef Login(self):"""用户登录"""while True:name = input('输入用户名:')pwd = input('输入密码:')for i in self.user_list:if i.name == name and i.pwd == pwd:print('登录成功')returnelse:print('用户名密码错误')continuedef run(self):"""程序入口"""while True:func_dict = {'1':self.Login,'2':self.regist}print('界面(N退出):1【登录】2.【注册】')num = input('输入:')if num.upper() == 'N':returnfunc = func_dict.get(num)if func:func()else:print('输入错误')if __name__ == "__main__":obj = User_Mannager()obj.run()

属性:对象具有的特征叫属性

    设置和获取对象具有的属性:

      1,静态  类中:  对象.属性=值    

             外部:  设置:obj = Foo(属性的值)

                  获取:对象.属性  

      2,动态(反射):以字符串的形式去设置获取对象属性  类中:对象.属性=值或者pass  

                                外部:setattr:新增此对象的属性及值或者修改此对象已经具有的属性的值    

                                   格式:setattr(对象   ,属性   (字符串形式),值   (任意类型))

                                   getattr:获取对象已经具有的属性的值                

                                   格式:getattr(对象,属性  (字符串形式),默认值(属性不存在时返回,任意类型)

属性的设置和获取(静态和动态)
#设置和获取对象的值方法一(静态):
class Foo:def __init__(self,n,p):     #给这个类所创建的对象中公有的属性进行值的初始化self.name = nself.pwd = p
obj = Foo('guohan',123)     #设置对象属性的值(对象属性的值封装到对象中)
print(obj.name)     #获取对象的值
#>>>guohan#设置和获取对象的值方法二(动态:内置函数):     setattr getattr
class Foo:def __init__(self,n,p):     #给这个类所创建的对象中公有的属性进行值的初始化self.name = nself.pwd = p
obj = Foo(1,1)
n = input('输入用户名:')
p = input('输入密码:')
setattr(obj,'name',n)    #通过内置函数setattr去设置\修改对象的属性
setattr(obj,'pwd',p) 
data1 = getattr(obj,'name',0)   #通过内置函数getattr去获取对象中封装的属性的值
data2 = getattr(obj,'pwd',0)
data3 = getattr(obj,'email',0)
print(data1)
print(data2)
print(data3)
#>>>guoahn
#>>>111
#>>>0

    3.封装:    同一类的方法封装到同一类中    值封装到对象中

            类中的属性和方法:公有(一般都是)  私有(以_开头):类实例化的对象无法直接访问私有成员(属性和方法)

            获取对象中封装的所有值

对象.__dict__以字典形式获取对象的属性和值
#获取对象中封装的所有的属性ji
class Foo:def __init__(self,name,pwd,eamil):self.name = nameself.pwd =  pwdself.eamil = eamil
obj = Foo('guohan','123','888')
print(obj.__dict__)
#>>>{'name': 'guohan', 'pwd': '123', 'eamil': '888'}
setattr(obj,'name','gh')
print(obj.__dict__)
#>>>{'name': 'gh', 'pwd': '123', 'eamil': '888'}

    4.继承:    搞清楚self是谁由谁创建 调用方法时去self自己的类中去找  

            查找方法顺序:先再自己类中找再去基类找(多个基类则由左至右)  时刻注意self是谁

    5.多态:    对于一个函数而言,Python对于参数的类型不会限制,那么传入参数时就可以是各种类型,在函数中如果有例如:arg.方法,那么就是对于传入类型的一个限制(类型必须有该方法)。
              这就是鸭子模型只要有该方法,就是我们要想的类型

 

http://www.rkmt.cn/news/20816.html

相关文章:

  • 【文章目录】
  • Excel DDE 教學:即時資料交換的詳細指南 - 指南
  • 实用指南:JavaWeb 课堂笔记 —— 24 AOP 面向切面编程
  • ESP8266 PMW使用的简单介绍
  • 加州新规要求AI必须表明其AI身份
  • 详细介绍:【rabbitmq 高级特性】全面详解RabbitMQ TTL (Time To Live)
  • 低代码平台底层协议设计
  • 2025 年热处理钎焊炉工装夹具厂家推荐榜:钎焊炉用耐热钢工装夹具厂家,聚焦品质与适配,助力企业高效生产
  • 实用指南:基于Spring Boot与SSM的社团管理系统架构设计
  • 完整教程:数据结构 01 线性表
  • 2025年耐磨轮胎厂家最新推荐排行榜,矿山耐磨轮胎,工程耐磨轮胎,重载耐磨轮胎公司推荐!
  • 行列式按多行或列展开
  • SCANIA中国EDI对接供应商指南:快速完成上线的最佳方案
  • 2025 年模板厂家最新推荐榜单:覆盖塑钢 / 水沟 / 现浇 / 拱形骨架等多类型,精选优质厂家助力工程高效采购
  • 基于EKF/UKF的非线性飞行器系统滤波实现
  • 实验任务2 - pp
  • 第二次实验作业
  • ControlNet——AI图像生成的“精准操控工具”
  • 2025 武汉实缴服务机构最新推荐排行榜:知识产权 / 注册资本代办优选清单,深度解析专业服务品质
  • 实用指南:消息队列 MQ
  • 2025 年最新推荐高性价比实木家具厂家排行榜:涵盖实木床餐边柜/餐桌斗柜/书柜/梳妆台/床头柜/餐椅沙发/休闲椅优质厂家精选
  • 多智能体微服务实战(3/4):Aspire 打造本地 K8s 开发环境
  • 一文读懂Optimism,Arbitrum,ZK Rollups 共识算法
  • notepad++中使用正则表达式过滤数据
  • 2025 年风机厂家最新推荐排行榜:聚焦交流 / 直流 / 无刷 / 大吸力 / 调速 / 小型高压等多类型风机,精选优质企业助力采购决策
  • 简单高效的SQL注入测试方法:Break Repair技术详解
  • AG Grid推出全新MCP服务器——让AI更智能地理解你的数据表格!
  • uniapp 判断在特定app或h5里还需要判断当前环境
  • Excel处理控件Aspose.Cells教程:使用Python将TXT文件转换为CSV
  • 2025 年干燥机厂商最新推荐排行榜:聚焦实验室与工业用优质设备,精选实力品牌供采购参考工业喷雾 / 陶瓷喷雾 / 制粒 / 奶粉喷雾 / 离心喷雾干燥机厂家推荐