反射getattr】的更多相关文章

判断一个对象有没有血缘关系:isinstance() 里面写的是字类对象和父类名用来判断他们的关系 issubclass()是用来判断两个类是不是有继承的关系 ,括号内 写字类名和父类名  可以判断出字类和父类或者爷爷类的关系 class A: role = "Person" def __init__(self): self.money = 500 def func(self): print("*"*10)a = A()print(a.func) #得到是内存地址#…
@property   将类中的方法伪装成属性 与@property相关的俩个   @方法.setter   修改操作    @方法.deleter   删除一个property属性的时候会执行被deleter装饰的方法 在类的命名空间有什么: 静态属性, 方法(动态属性), @property方法 类方法(@classmethod) 类方法的默认参数:cls,指的是调用这个方法的类名 类方法的调用方式:通过类名.类方法调用,本质就是方法 应用场景:如果你的整个方法中都没有用到对象命名空间中的名…
一.反射:用字符串数据类型的变量名来访问这个变量的值 上代码^_^ # class Student: # ROLE = 'STUDENT' # @classmethod # def check_course(cls): # print('查看课程了') # # @staticmethod # def login(): # print('登录') # # 反射查看属性# # print(Student.ROLE)#普通方法# # print(getattr(Student,'ROLE'))## #…
一.今日内容总结 1.反射 使用字符串数据类型的变量名来操作一个变量的值. #使用反射获取某个命名空间中的值, #需要 #有一个变量指向这个命名空间 #字符串数据类型的名字 #再使用getattr获取值, #如果变量能直接获取结果 #如果是函数,只能拿到内存地址,加上括号就是执行 #使用类名反射: 静态属性.类方法.静态方法 #使用对象名反射: 对象属性.绑定对象方法 #使用模块名反射: 变量.函数.类 #在自己所在文件中反射全局变量: getattr(sys.modules[__name__]…
通过字符串映射或修改程序运行时的状态.属性.方法, 有以下4个方法 getattr(object, name_str, default=None) 根据字符串name_str去获取obj对象里的方法内存地址hasattr(object,name_str) 判断一个对象里是否有对应的name_str字符串的方法setattr(obj, y, v)这个相当于obj.y=vdelattr(x, y) class Foo(object): def __init__(self): self.name =…
Lesson0402_GetatrrWebsite.py #!/usr/bin/env/python #-*-coding:utf-8-*- #Author:LingChongShi #查看源码Ctrl+左键 def index(): print('欢迎访问XX网站') def login(): print('登录成功') def logout(): print('退出登录') class People(object): country='China' def __init__(self): p…
getattr(对象,'方法')():从一个对象里面找到里面的方法,,, 传了一个对象,再传一个字符串,就能找到这个字符串的方法 hasattr(对象,'方法') 判断这个对象里面有没有这个方法,返回True和False 用在类里面的使用…
python反射 python的反射是基于字符串的形式去对象(模块)中操作其成员.此操作是动态的,常用于web开发中url参数中对应模块或者函数的反射. 下面开始具体说明: 场景需求: 我的python脚本中有一百个函数,当前端页面被访问到之后,针对特定的url 我后端有特定的函数进行处理,我该如何判断这个URL需要后端那个函数来处理呢?写if判断?别闹了.一百多个呢,那执行效率会有多慢.看下面代码: def f1(): print("f1") def f2(): print(&quo…
异常 反射 一.异常处理: AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x IOError 输入/输出异常:基本上是无法打开文件 ImportError 无法引入模块或包:基本上是路径问题或名称错误 IndentationError 语法错误(的子类) :代码没有正确对齐 IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5] KeyError 试图访问字典里不存在的键 KeyboardInterrupt Ctrl+C…
一.方法和函数的区别 面向对象 初级 class StarkConfig(object): def __init__(self,model_class): self.model_class = model_class def changelist_view(self,request): return 123 class RoleConfig(StarkConfig): def changelist_view(self,request): return 666 obj1 = StarkConfig…
一.反射的实际案例: def main(): menu = ''' 1.账户信息 2.还款 3.取款 4.转账 5.账单 ''' menu_dic = { ':account_info, ':repay, ':withdraw, ':transfer, ':pay_check, } while True: print(menu) user_option = input(">>: ").strip() if user_option in menu_dic: menu_dic[…
面向对象中内置函数 issubclass方法: 检查第一个参数是否是第二个参数的子子孙孙类     返回  :   是一个布尔值 class Base(object): pass class Foo(Base): pass class Bar(Foo): pass print(issubclass(Bar,Base)) # 检查第一个参数是否是第二个参数的子子孙孙类 type: 方法 获取当前对象是由那个类创建      返回:  类的类型 ,  if判断是否等于某个类   class Foo(…
一.反射 在python中,反射通常是指一个对象应该具备,可以检测修复,增加自身属性的能力. 而反射可以通过字符串对其进行操作. 其中涉及了4个函数,是四个普通 的函数: hasattr(oop,str,none)判断该对象是否有某个属性,如果有返回其值,如果没有,返回第三参数,默认为none getattr(oop,str) 获取该对象的某个属性的值 setattr(oop,str,key)将某个属性添加到该对象中 delattr(oop,str)将从对象中删除属性 class Test1:…
一.isinstance,type,issubclass issubclass() 这个内置函数可以帮我们判断x类是否是y类的子类 issubclass(x,y) class Base: pass class Foo(Base): pass class Bar(Foo): pass print(issubclass(Bar, Foo)) # True print(issubclass(Foo, Bar)) # False print(issubclass(Bar, Base)) # True t…
一.super进阶 在多继承中:严格按照mro顺序来执行 super是按照mro顺序来寻找当前类的下一类 在py3中不需要传参数,自动就帮我们寻找当前类的mro顺序的下一个类中的同名方法 在py2中的新式类中,需要我们主动传递参数super(子类的名字,子类的对象). 函数名() 这样才能够帮我们调用到这个子类的mro顺序的下一个类中的方法 在py2的经典类中,并不支持使用super来找下一个类 class A: def func(self): print('is A') ​ ​ class B…
一.算法 冒泡排序 两两比较 打的沉下去,小的浮上来  从而把数字从小到大排列出来 选择排序 随机取一个索引作为最大值,然后和列表中的其他索引进行比较,如果l[0]<l[1],则将l[1]修改为最大值,继续和其他索引元素比较,将最大值排在最后,完成排序 插入排序 使用维护一个有序的集合,获取第一个元素作为最大值,然后去列表中的第二个元素,两两比较,如果比第二个元素大于第一个元素则排在第一个元素后面,如果小于第一个元素则排在第一个元素前面,然后依次取列表中的元素按照此方法进行比较,最终完成列表元素…
一.三目(元)运算符 定义:就是 if...else...语法糖前提:简化if...else...结构,且两个分支有且只有一条语句注:三元运算符的结果不一定要与条件直接性关系​ cmd = input('cmd: ') print('可以转化为数字') if cmd.isdigit() else print('不可以转化为数字') ​ ​ a = 20 b = 30 res = a if a > b else b # 求大值 print(res) ​ ​ res = 'b为小值' if a >…
静态方法    与类无关,不能访问类里的任何属性和方法类方法    只能访问类变量属性@property    把一个方法变成一个静态属性,    flight.status    @status.setter    flight.status = 3    @status.delter反射    getattr(obj,str)    setattr(obj,str,val)    hasattr(obj,str)    delattr(obj,str) __new__class Foo(ob…
三目运算符 # 三目(元)运算符:就是 if...else...语法糖# 前提:简化if...else...结构,且两个分支有且只有一条语句# 注:三元运算符的结果不一定要与条件直接性关系​cmd = input('cmd: ')print('可以转化为数字') if cmd.isdigit() else print('不可以转化为数字')​​a = 20b = 30res = a if a > b else b  # 求大值print(res)​​res = 'b为小值' if a > b…
python: 函数式 + 面向对象 函数式可以做所有的事,是否合适? 面向对象: 一.定义: 函数: def + 函数名(参数) 面向对象: class  -> 名字叫 Bar 类 def  -> 名字叫 foo 的方法.第一个参数是 self class Bar(): def __init__(self, name, age): ''' 构造方法,构造方法的特性,类名()自动执行构造方法 ''' # 字段 self.name = name self.age = age ') def foo…
一.递归 定义:本质上是回溯和递推 回溯:询问答案的过程 递推:推出答案的过程 前提: 回溯到一个有结果的值开始递推 回溯与递推的条件要有规律 方式: 直接递归:自己调用自己 间接递归:通过别人来调用自己 栈溢出问题: 递归函数的优点是定义简单,逻辑清晰.理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰. 使用递归函数需要注意防止栈溢出.在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧.由于栈…
  1.stark - 总结 用到的知识点: 1.单例模式 2.继承 3.反射 4.面向对象 5.modelform 1.注册表 单例模式 site = StarkSite() 2.生成url url(r'^stark/', ([],None,None)) 3.数据列表展示 可自定制配置显示: list_display = ["__str__"] list_display_links = [] modelform_class = [] search_fields = [] action…
今日概要: 1.常用模块 - os模块 - random模块 - shutil模块 - hashlib模块 - pickle/json模块 - shelve模块 - configparser模块 - subprocess模块 - xml模块 - logging模块 - sys模块 - re模块 - time模块 - importlib模块 -base64模块 2.软件开发规范 3.初识面向对象 一.os模块 常规用法: os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路…
########################总结################ 面向对象回顾 类:对某一个事物的描述,对一些属性和方法的归类 class 类名: var=123#类变量 def __init__(self,x,x,x)#实例变量 self.xxx=xxx self.xxx=xxx self.xxx=xxx #实例方法:给对象用的 def method(self): pass @staticmethod():--函数 def stsmethod(): pass @classm…
今日内容: 1.三元表达式 2.列表.元组生成式 | 字典生成式 3.递归 4.匿名函数 5.内置函数 一.三元表达式 三元运算符:就是 if...else... 语法糖 前提:if 和 else # 三元运算符的结果不一定要与条件有直接性关系 res = 'b为较小的数' if a > b else 'a为较小的数' # 求小值 print(res) # 案例:得到两个数中较大的值 a = 20 b = 30 res = a if a > b else b print(res) 二.列表.元…
1.stark - 总结 (单例,继承,反射,面向对象,modelform 应用得很好!!) 1.注册表 单例模式 site = StarkSite() 2.生成url url(r'^stark/', ([],None,None)) 3.数据列表展示 可自定义配置显示: list_display = ["__str__"] list_display_links = [] modelform_class = [] search_fields = [] actions = [] list_…
静态方法: 与类无关,不能访问类里的任何属性和方法 类方法: 只能访问类变量 属性@property 把一个方法变成一个静态属性 反射 getattr(obj,str) setattr(obj,str,func) hasattr(obj,str) delattr(obj,str) 异常:自定义异常 raise:抓取异常 断言: assert type(obj.name) is int print('ddddd') print(obj.name / 2)     断言:进行条件判断 断言:接下来程…
一.filter 效果图 知识点 1.配置得显示Filter,不配置就不显示了 list_filter = ['title','publish', 'authors'] 2.前端显示 后端返回 字典 eg:{"publish":["<a href=''>全部</a>","<a href=''>南京出版社</a>","<a href=''>上海出版社</a>"…
优化代码 1:页面的增删改查url反转的封装到类里:ModelSatrk # 编辑页面的url def get_edit_url(self,obj): edit_url = reverse("%s_%s_change" % self.app_model_name,args=(obj.pk,)) return edit_url # 删除页面url def get_delete_url(self,obj): del_url = reverse("%s_%s_delete"…
1.怎么在显示页面添加新字段(a标签)?在admin.py下注册就好了 当我们需要在admin页面添加新的a标签时,需要引入一个类似safe功能的模块 from django.utils.safestring import mark_safe from django.contrib import admin # Register your models here. from .models import * from django.utils.safestring import mark_saf…