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基础之面向对象(初级篇)
概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 面向过程编程最易被初学 ...
随机推荐
- showDialog 必须Stateful
showDialog 必须Stateful 因为需要context
- ELK学习笔记之logstash安装logstash-filter-multiline(在线离线安装)
0x00 概述 ELK-logstash在搬运日志的时候会出现多行日志,普通的搬运会造成保存到ES中单条单条,很丑,而且不方便读取,logstash-filter-multiline可以解决该问题 g ...
- BZOJ 4195: [Noi2015]程序自动分析 并查集+离散化
LUOGU 1955BZOJ 4195 题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3...代表程序中出现的变量 ...
- [Python数据挖掘]第3章、数据探索
1.缺失值处理:删除.插补.不处理 2.离群点分析:简单统计量分析.3σ原则(数据服从正态分布).箱型图(最好用) 离群点(异常值)定义为小于QL-1.5IQR或大于Qu+1.5IQR import ...
- loj 6037 「雅礼集训 2017 Day4」猜数列 - 动态规划
题目传送门 传送门 题目大意 有一个位置数列,给定$n$条线索,每条线索从某一个位置开始,一直向左或者向右走,每遇到一个还没有在线索中出现的数就将它加入线索,问最小的可能的数列长度. 依次从左到右考虑 ...
- JS高程12.2.3元素大小的学习笔记
<JavaScript高级程序设计>中讲述了通过JS如何控制页面中元素的大小,其中涉及到三对属性:偏移量,客户区大小,滚动大小.以前自己经常看到这三对属性,但是具体不是很清楚,容易混淆.所 ...
- linux下的nmap工具能干什么?
答:可以用来探测远程主机的操作系统类型,使用方法如下: nmap -A <ip address>
- Uniprot数据库
Uniprot数据库是Universal Protein的英文缩写,是信息最丰富.资源最广的蛋白质数据库. UniprotKB由两部分组成: UniProtKB/Swiss-Prot 高质量的.手工注 ...
- Go 参数传递是传值还是传引用
什么是传值(值传递)? 传值的意思是:函数传递的总是原来这个东西的一个副本.一个副拷贝.比如我们传递一个 int 类型的参数,传递 的其实这个参数的一个副本:传递一个指针类型的参数,其实传递的是这个指 ...
- CSS实现水平垂直居中的1010种方式
转载自:CSS实现水平垂直居中的1010种方式 划重点,这是一道面试必考题,很多面试官都喜欢问这个问题,我就被问过好几次了 要实现上图的效果看似很简单,实则暗藏玄机,本文总结了一下CSS实现水平垂直居 ...