python反射和面向对象的知识并简述基本的异常
- # 1、面向对象不是所有的情况都适用
# 2、面向对象编程
# a.定义类
# class Foo:
# def 方法1(self,bb):
# b.根据类创建对象(创建)- # class Person():
# def __init__(self,name,age):
# print(name)
# #print(self.name)
# self.Name=name
# self.Age=age
# def show(self):
# print("姓名:%s,年龄:%d"%(self.Name,self.Age))
#
# ol=Person("guo",23)
# ol.show()
# #**************
# import pickle
#
# ret=pickle.load(open('文件名'),'rb')
# ret=pickle.load(open('文件名'),'wb')- #存取游戏的进度
- #面向对象编程之继承
- # class animals():
# def he(self):
# print(self.name)
# class dog(animals):
# def __init__(self,name):
# self.name=name
# def show(self):
# print(self.name+'吃屎')
#
# do=dog("师傅")
# do.he()
# do.show()- #其中的animals叫做基类,dog叫做派生类,派生类可以继承基类的属性和方法
# 如果基类和派生类中有相同的属性或者方法的时候,则默认找派生类中的属性或者方法
#基类不能继承派生类的方法或者属性
#在java和c#中一个子类只能继承一个父类,但在python中,一个派生类可以继承多个基类例如:
#class dog(animals,shengwu):
# 如果继承多个,并且每一个都有共同的属性或者方法,那么优先级是,自己,左,右- # 总结:
# 一、反射
# 字符串的形式导入模块__import__
# 字符串的形式从模块中找方法getattr\hasattr()\delattr()\setattr()
# __import__("lib.bb.py",fromlist=True)
# 二、面向对象
# 类()=>__init__,构造方法
# 继承:python支持多继承,而java和c#中并不支持
# 多态:- #面向对象的进阶
# 成员
# 成员修饰符
# 面相对象中一些特殊的方法- class Animals:
def __init__(self):
print("a的构造方法")
self.ty="动物"
class Cat(Animals):
def __init__(self):
print("B的构造方法")
self.n="猫"
# self.ty="动物"
#执行父类的构造方法
super(Cat,self).__init__()#和java一样执行父类的构造方法
#也可以用
Animals.__init__(self)#这种方法来调用父类的调用的方法- #类后面加括号自动执行
#数据初始化
#a=Animals()
c=Cat()
print(c.__dict__)
- #
#
# class Foo:
# age=20
# #则age叫做静态字段,存在类中
# def __init__(self,name):
# #name叫做普通字段,存在对象中
# self.name=name
# #show 叫做普通方法,存在类中
# def show(self):
# print("show")
# #类方法只能通过类进行访问
# @classmethod
# def xxoo(self):
# print("xxoo")
#
# #静态方法
# @staticmethod
# def xo():
# print("xo")
# #特性
# def stat(self):
# return "这是一个测试"
# @property
# def end(self):
# return "这里是结束"
# @end.setter
# def end(self,value):
# print(value)
# c=Foo('alex')
# r=hasattr(c,'show')
# print(r)
# Foo.xo()#访问静态方法(通常用类进行访问,不要用对象进行访问)静态方法存在的意义,不用创建对象就可以访问这个方法
# ret=c.stat()
# print(c.end)#加property把原来用创建对象的方法访问变成这样访问,并且不能加参数,可以理解为将方法伪装成一个字段
#那么,字段可以设置,特性是这样设置呢,如下
# print(c.end)
# c.end=1234- #反射
#以字符串的形式去对象(模块)中操作其成员
#反射:类,只能找类里的成员
#r=hasattr(Foo,"show111")
#print(r)
#反射:对象,既可以找对象,找类的成员- # 一、面向对象的进阶
# 成员
# #通过类访问有:静态字段
# #通过对象访问:普通字段
# 成员修饰符
# 面向对象中一些常用特殊的方法- # 知识梳理
# 三大特性:封装、继承、多态
# 成员:
# 字段 静态字段、普通字段
# 方法 静态方法、类方法、普通方法
# 特性 普通特性- #成员修饰符
#即__sx,把sx定义成私有的字段
#即使子类也不能访问父类的私有字段
#python里特殊的
- # class Foo:
# def __init__(self):
# print("init")
# def __call__(self, *args, **kwargs):
# print("call")
# def __getitem__(self, item):
# print(item)
# def __setitem__(self, key, value):
# print(key,value)
# def __delitem__(self, key):
# print(key)
# r=Foo()#执行__init__
# r()#执行__call__方法
# Foo()()
# r["dkfjladk"]#执行__getitem__方法
# r["xxx"]=123#执行__setitem__方法
# del r['ooo']
"""r[1:3]
del r[1:3]自己测试的模块"""
# dic=dict(k1=123,k2=456)
# print(dic['k1'])
# del dic['k2']- #************************
- #异常处理
#基本的异常处理
# inp=input("请输入内容:")
# try:
# num = int(inp)
# print(num)
# except Exception as e:
# print("转换失败")
#异常的完整结构- try:
#主代码模块
pass
except Exception as e:
print(e)
#异常时,执行该模块
else:
#主代码执行完之后,执行该块
pass
finally:
#无论异常与否,最终执行该模块
pass
#这个异常是解释器触发的异常
#下面这个列子是主动触发的异常信息
# try:
# print("234")
# raise Exception("错了")
# except Exception as e:
# print(e)
python反射和面向对象的知识并简述基本的异常的更多相关文章
- 面向对象相关概念与在python中的面向对象知识(魔法方法+反射+元类+鸭子类型)
面向对象知识 封装 封装的原理是,其成员变量代表对象的属性,方法代表这个对象的动作真正的封装是,经过深入的思考,做出良好的抽象(设计属性时用到),给出“完整且最小”的接口,并使得内部细节可以对外透明( ...
- python基础,函数,面向对象,模块练习
---恢复内容开始--- python基础,函数,面向对象,模块练习 1,简述python中基本数据类型中表示False的数据有哪些? # [] {} () None 0 2,位和字节的关系? # ...
- Python全栈--9 __import__ 反射和面向对象基础 self 封装 继承(多继承的顺序) 多态
一.反射 python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员.获取成员.设置成员.删 ...
- python基础-9__import__ 反射和面向对象基础 self 封装 继承(多继承顺序) 多态
一 反射 python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员.获取成员.设置成员.删 ...
- Python 面向对象基础知识
面向对象基础知识 1.什么是面向对象编程? - 以前使用函数 - 类 + 对象 2.什么是类什么是对象,又有什么关系? class 类: def 函数1(): pass def 函数2(): pass ...
- python基础之面向对象高级编程
面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个"函数"供使用(可以讲多函数中公用的变量封装到对象中) ...
- python高级之面向对象高级
python高级之面向对象高级 本节内容 成员修饰符 特殊成员 类与对象 异常处理 反射/自省 单例模式 1.成员修饰符 python的类中只有私有成员和公有成员两种,不像c++中的类有公有成员(pu ...
- 第五篇:python高级之面向对象高级
python高级之面向对象高级 python高级之面向对象高级 本节内容 成员修饰符 特殊成员 类与对象 异常处理 反射/自省 单例模式 1.成员修饰符 python的类中只有私有成员和公有成员两 ...
- Python基础之面向对象(初级篇)
概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 面向过程编程最易被初学 ...
随机推荐
- WebSocket 的理解
WebSocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术.依靠这种技术可以实现客户端和服务器端的长连接,双向实时通信. 它的最大特点就是,服务器可以主动向客户端推送信息,客 ...
- 浅谈Tarjan算法
从这里开始 预备知识 两个数组 Tarjan 算法的应用 求割点和割边 求点-双连通分量 求边-双连通分量 求强连通分量 预备知识 设无向图$G_{0} = (V_{0}, E_{0})$,其中$V_ ...
- php登录注册
php 登录注册 注册代码:register.php <style type="text/css"> form{ width:300px; background-col ...
- XSS漏洞学习笔记
XSS漏洞学习 简介 xss漏洞,英文名为cross site scripting. xss最大的特点就是能注入恶意的代码到用户浏览器的网页上,从而达到劫持用户会话的目的. 说白了就是想尽办法让你加载 ...
- video 自动循环播放
video 只加autoplay并不能自动播放,需要再加上muted <video controls="controls" autoplay loop muted> ...
- node中redis重连
项目node中用到redis ,做了的moudle,但是有个问题,两台redis,一台挂了,redis能自动切换,我的项目却不会自动重连: 查了资料,redis本身是实现了重连机制啊,为什么不自动重连 ...
- CSS布局(圣杯、双飞翼、flex)
圣杯布局(float + 负margin + padding + position) <!DOCTYPE html> <html> <head> <meta ...
- efk学习整理
概念 Logstash 数据收集处理引擎.支持动态的从各种数据源搜集数据,并对数据进行过滤.分析.丰富.统一格式等操作,然后存储以供后续使用. kibana 可视化化平台.它能够搜索.展示存储在 El ...
- 日常记Bug
前记:后端写代码应该对数据的交互更加掌握,不要被编码.数据模型细节坑住 Unicode编码.Django数据迁移偶尔产生的不稳定 处理细项工资记录模型: class TeachRoll(models. ...
- Linux中python3,django,redis以及mariab的安装
1. Linux中python3,django,redis以及mariab的安装 2. CentOS下编译安装python3 编译安装python3.6的步骤 1.下载python3源码包 wget ...