# 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反射和面向对象的知识并简述基本的异常的更多相关文章

  1. 面向对象相关概念与在python中的面向对象知识(魔法方法+反射+元类+鸭子类型)

    面向对象知识 封装 封装的原理是,其成员变量代表对象的属性,方法代表这个对象的动作真正的封装是,经过深入的思考,做出良好的抽象(设计属性时用到),给出“完整且最小”的接口,并使得内部细节可以对外透明( ...

  2. python基础,函数,面向对象,模块练习

    ---恢复内容开始--- python基础,函数,面向对象,模块练习 1,简述python中基本数据类型中表示False的数据有哪些? #  [] {} () None 0 2,位和字节的关系? # ...

  3. Python全栈--9 __import__ 反射和面向对象基础 self 封装 继承(多继承的顺序) 多态

    一.反射 python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员.获取成员.设置成员.删 ...

  4. python基础-9__import__ 反射和面向对象基础 self 封装 继承(多继承顺序) 多态

    一 反射 python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员.获取成员.设置成员.删 ...

  5. Python 面向对象基础知识

    面向对象基础知识 1.什么是面向对象编程? - 以前使用函数 - 类 + 对象 2.什么是类什么是对象,又有什么关系? class 类: def 函数1(): pass def 函数2(): pass ...

  6. python基础之面向对象高级编程

    面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个"函数"供使用(可以讲多函数中公用的变量封装到对象中) ...

  7. python高级之面向对象高级

    python高级之面向对象高级 本节内容 成员修饰符 特殊成员 类与对象 异常处理 反射/自省 单例模式 1.成员修饰符 python的类中只有私有成员和公有成员两种,不像c++中的类有公有成员(pu ...

  8. 第五篇:python高级之面向对象高级

    python高级之面向对象高级   python高级之面向对象高级 本节内容 成员修饰符 特殊成员 类与对象 异常处理 反射/自省 单例模式 1.成员修饰符 python的类中只有私有成员和公有成员两 ...

  9. Python基础之面向对象(初级篇)

    概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 面向过程编程最易被初学 ...

随机推荐

  1. Eclipse中tomcat启动时报jar包 it's not a class错误;

    Console报错如上: 解决方法: 在Eclipse中Servers文件夹下 对应的项目文件中catalina.properties文件中tomcat.util.scan.DefaultJarSca ...

  2. RSA非对称加密,公钥加密/私钥解密

    非对称加密 package test; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFound ...

  3. Python游戏编程入门

    <Python游戏编程入门>这些文章负责整理在这本书中的知识点.注意事项和课后习题的尝试实现.并且对每一个章节给出的最终实例进行分析和注释. 初识pygame:pie游戏pygame游戏库 ...

  4. 《动态规划_入门 LIS 问题 》

    问题描述 问题 A: 最长上升子序列 时间限制: 2 Sec  内存限制: 64 MB提交: 461  解决: 236[提交][状态][讨论版][命题人:外部导入] 题目描述 一个数列ai如果满足条件 ...

  5. Polly 熔断策略

    熔断策略主要以 CircuitBreaker 来完成. 工作原理 熔断器可以被看作为一个主要含有三个状态的状态机 如果以电路开关来看: 开关闭合对应 CLOSED 状态, 开关打开对应 OPEN 状态 ...

  6. Java基本语法(一)

    1,Java中命名规则与规范 命名规则是我们必须遵守的约定: 1,Java中需要命名的地方(我们称之为标识符),可以26个英文字母(不区分大小写),0-9的数字,_和$等组成,不能包含特殊字符(#), ...

  7. fprintf中使用stderr

    fprintf是C/C++中的一个格式化写-库函数,位于头文件<stdio.h>中,其作用是格式化输出到一个流/文件中 运行如下代码: #include <stdio.h> v ...

  8. anaconda中安装TensorFlow的方法

    作为一个新手党加手残党真的折腾了好久才搞定,记录一下. step1:在anaconda prompt终端中输入 pip3 install -i https://pypi.tuna.tsinghua.e ...

  9. vim编辑器-多行加注释与去注释

    在使用vim编辑器时,有时候需要对多行代码进行加注释或去注释,下面将介绍两种方法. 方法一:块选择模式 1. 插入注释 (1)首先按键盘上的ESC进入命令行模式 (2)再按Ctrl+V进入VISUAL ...

  10. 在linux 上安装ansible

    ansible 在线安装:yum install -y epel-releaseyum install -y ansible离线安装:rpm wget https://releases.ansible ...