面向对象初级

news/2025/10/14 13:40:30/文章来源:https://www.cnblogs.com/guohan222/p/19140883

    面向对象初级:

    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.mzph.cn/news/936792.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【文章目录】

文章目录 【STM32】 【STM32系列】STM32通用【STM32系列】基于HAL库的串口DMA空闲中断接收+串口DMA发送 【STM32系列】超好用的开源按键状态系统lwbtn,以及超详细的移植教程 【STM32系列】EXTI11触发三ADC同步(并非同…

Excel DDE 教學:即時資料交換的詳細指南 - 指南

Excel DDE 教學:即時資料交換的詳細指南 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", …

子网掩码基础知识

子网掩码基础知识 子网掩码由连续的1和连续的0组成,1表示网络位,0表示主机位。 1. 基础概念IPv4地址:由32位二进制组成,通常表示为4个十进制数(如192.168.1.0)。 子网掩码:用于划分网络和主机部分。例如,255.2…

iOS 框架全解析,原生框架与跨平台框架对比、开发应用打包与 App Store 上架实战经验 - 指南

iOS 框架全解析,原生框架与跨平台框架对比、开发应用打包与 App Store 上架实战经验 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !impor…

微信机器人框架

微信机器人框架、微信二次开发机器人接口开发、微信机器人制作教程API文档 接入指南、对接流程 1.申请api平台账号 2.开通接口权限 3.对接api 4.测试上线如何测试? 假如需要接收并处理微信消息,研发人员需掌握任意一…

AI元人文构想基础理论体系研究

AI元人文构想基础理论体系研究 ——2025.10.14修订版引言:AI元人文构想的理论溯源与概念界定1.1 理论背景与提出缘由 当前人工智能发展正面临根本性挑战:主流AI范式在有效处理人类价值的复杂性、模糊性和动态性方面存…

详细介绍:Go 语言中指针介绍

详细介绍:Go 语言中指针介绍pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

实用指南:JavaWeb 课堂笔记 —— 24 AOP 面向切面编程

实用指南:JavaWeb 课堂笔记 —— 24 AOP 面向切面编程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&q…

2025年7款与Jira数据同步的实用国产优秀项目管理软件对比

为什么我们需要这篇对比? 如果你是一位项目经理,或许经历过这些困扰:团队用惯了Jira,但因数据合规要求急需国产替代,却担心同步成本高、功能断层? 想找一款能与Jira无缝对接的工具,兼顾本地化服务与灵活扩展,却…

ESP8266 PMW使用的简单介绍

前言 呼吸灯是常见的LED应用。LED呼吸灯的流程是缓缓点亮LED灯,再缓缓熄灭LED灯。在夜色下,缓慢闪烁的LED显得格外迷人。 如何使用ESP8266MOD实现此效果, 这里简单地总结一下。 一、PWM单元介绍ESP8266有四个PWM输出…

DevEco Testing全面解析:HarmonyOS测试框架与实战指南 - 教程

DevEco Testing全面解析:HarmonyOS测试框架与实战指南 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Con…

C#知识学习-015(修饰符_4) - 详解

C#知识学习-015(修饰符_4) - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco…

加州新规要求AI必须表明其AI身份

加州通过SB 243法案,要求伴侣聊天机器人必须明确告知用户其AI身份,并建立自杀预防报告机制。该法案旨在保护儿童安全,要求AI开发者实施防护措施,防止用户误以为在与真人交流。加州新规要求AI必须表明其AI身份 一项…

详细介绍:【rabbitmq 高级特性】全面详解RabbitMQ TTL (Time To Live)

详细介绍:【rabbitmq 高级特性】全面详解RabbitMQ TTL (Time To Live)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &…

第三台中转机实现远程scp文件到远程

点击查看代码 命令 scp -3r user@ip:/path/file user@ip:/path/ 远程主机(源)-》中转机-》远程主机(目标)如果要实现免密需要 ssh-copy-id user@ip 将本地的 SSH 公钥快速复制到远程主机的 ~/.ssh/authorized_key…

单片机使用同一硬件定时器实现多周期定时功能

一个复杂的单片机程序可能需要很多种周期不同的定时器,用于执行不同的任务,如传感器数据采集、显示设备刷新或者执行设备的驱动等。如果每种周期使用一个单片机的硬件定时器将很难实现全部的功能需求,本文记录一种简…

(二十六)、Kuboard 部署网络问题 k8s 使用本地镜像 k8s使用 register本地镜像站 综合应用 - 实践

(二十六)、Kuboard 部署网络问题 &k8s 使用本地镜像 & k8s使用 register本地镜像站 综合应用 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; displa…

低代码平台底层协议设计

低代码平台底层协议设计 1. 核心协议架构 1.1 协议分层设计 // 低代码平台协议栈 interface LowCodeProtocolStack {// 1. 传输层协议transport: TransportProtocol;// 2. 数据描述协议schema: SchemaProtocol;// 3. 组…

从PHP到Spring Boot:思维的转变与入门实战 (指南二) - 教程

从PHP到Spring Boot:思维的转变与入门实战 (指南二) - 教程2025-10-14 12:27 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !impor…