当前位置: 首页 > 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.hskmm.com/?act=detail&tid=30856

相关文章:

  • 【文章目录】
  • Excel DDE 教學:即時資料交換的詳細指南 - 指南
  • 子网掩码基础知识
  • AI元人文构想基础理论体系研究
  • 微信机器人框架
  • 数论学习笔记
  • 实用指南:JavaWeb 课堂笔记 —— 24 AOP 面向切面编程
  • 微信机器人接口开发
  • 2025年7款与Jira数据同步的实用国产优秀项目管理软件对比
  • ESP8266 PMW使用的简单介绍
  • DevEco Testing全面解析:HarmonyOS测试框架与实战指南 - 教程
  • 本周第一单 多晶硅
  • 加州新规要求AI必须表明其AI身份
  • 详细介绍:【rabbitmq 高级特性】全面详解RabbitMQ TTL (Time To Live)
  • 第三台中转机实现远程scp文件到远程
  • 单片机使用同一硬件定时器实现多周期定时功能
  • 低代码平台底层协议设计
  • 基于海思Hi3798MV200 Android7.0达成电影播放蓝光导航功能
  • Vue 低代码平台渲染引擎设计
  • 2025 年热处理钎焊炉工装夹具厂家推荐榜:钎焊炉用耐热钢工装夹具厂家,聚焦品质与适配,助力企业高效生产
  • 实用指南:基于Spring Boot与SSM的社团管理系统架构设计
  • 请求超时重试封装
  • Emacs常用的一些快捷键,记不住的,方便查询!!
  • Microsoft Visual C++,Microsoft Visual Studio for Office Runtime,Microsoft Visual Basic Runtime等下载
  • 2025 年耐热钢厂家及热处理工装设备厂家推荐榜:多用炉/真空炉/台车炉/井式炉/箱式炉/耐热钢工装厂家,聚焦高效适配,助力企业精准选型
  • 实用指南:如何进行WGBS的数据挖掘——从甲基化水平到功能通路
  • python对接印度尼西亚股票数据接口文档
  • Webpack优化
  • 2025年舒适轮胎厂家最新权威推荐榜:静音耐磨,驾驶体验全面升级!
  • 2025年耐磨轮胎厂家最新推荐排行榜,矿山耐磨轮胎,工程耐磨轮胎,重载耐磨轮胎公司推荐!