当前位置: 首页 > news >正文

asp.net 项目成本预算系统的 网站开发/百度热搜电视剧

asp.net 项目成本预算系统的 网站开发,百度热搜电视剧,php做的网站facebook,福田蒙派克优缺点python的对象反射功能,经常在编程时使用.相比较其它的编程语言使用非常方便.反射就是用字符串来操作对象或者类,模块中的成员.一.对象的反射 反射功能的实现,由这4个内置函数来实现(hasattr, getattr, setattr, delattr) 1.1.hasattr判断是否有某个成员 判断对象中是否有属性, …

python的对象反射功能,经常在编程时使用.相比较其它的编程语言使用非常方便.反射就是用字符串来操作对象或者类,模块中的成员.

20180111010431548399.jpg

一.对象的反射

反射功能的实现,由这4个内置函数来实现(hasattr, getattr, setattr, delattr)

1.1.hasattr判断是否有某个成员

判断对象中是否有属性, 方法.返回bool值

#!/usr/bin/env python

# -*-coding:utf-8-*-

class Foo(object):

country = "china"

def __init__(self, name):

self.name = name

def f(self):

print "function f"

obj = Foo("abc")

print hasattr(obj, "name") #判断是否有name字段,返回True

print hasattr(obj, "f") #判断是否有f方法,返回True

print hasattr(obj, "ok") #没有这个方法,返回False

print hasattr(obj, "country") #判断有没有静态字段,返回True

print hasattr(Foo, "country") #使用类作为参数来判断

print "class:", Foo.__dict__.keys()

print "obj:", obj.__dict__.keys()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#!/usr/bin/env python

# -*-coding:utf-8-*-

classFoo(object):

country="china"

def __init__(self,name):

self.name=name

deff(self):

print"function f"

obj=Foo("abc")

print hasattr(obj,"name")#判断是否有name字段,返回True

print hasattr(obj,"f")#判断是否有f方法,返回True

print hasattr(obj,"ok")#没有这个方法,返回False

print hasattr(obj,"country")#判断有没有静态字段,返回True

print hasattr(Foo,"country")#使用类作为参数来判断

print"class:",Foo.__dict__.keys()

print"obj:",obj.__dict__.keys()

上例中使用对象作为obj参数来判断,是否有类的静态方法.也是可以的.因为对象的特殊性,先在对象中找是否有该成员,如果没在,通过对象指针,在去创建这个对象的类中找查

执行结果

True

True

False

True

True

class: [‘__module__‘, ‘f‘, ‘country‘, ‘__dict__‘, ‘__weakref__‘, ‘__doc__‘, ‘__init__‘]

obj: [‘name‘]

1

2

3

4

5

6

7

True

True

False

True

True

class:[‘__module__‘,‘f‘,‘country‘,‘__dict__‘,‘__weakref__‘,‘__doc__‘,‘__init__‘]

obj:[‘name‘]

1.2.获取对象的成员

也可以使用对象来获取类的成员.和上例中的hasattr一样

#!/usr/bin/env python

# -*-coding:utf-8-*-

class Foo(object):

country = "china"

def __init__(self, name):

self.name = name

def f(self):

print "this is function = ", self.name

obj = Foo("abc")

print getattr(obj, "name") #获取对象的name字段

f = getattr(obj, "f") #通过对象获取类的方法

print f #打印出来是信类的方法

f() #加上括号就能直接调用执行这个的方法

print getattr(Foo, "country")

print getattr(obj, "country") #使用对象也能找到静态字段

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#!/usr/bin/env python

# -*-coding:utf-8-*-

classFoo(object):

country="china"

def __init__(self,name):

self.name=name

deff(self):

print"this is function = ",self.name

obj=Foo("abc")

print getattr(obj,"name")#获取对象的name字段

f=getattr(obj,"f")#通过对象获取类的方法

printf#打印出来是信类的方法

f()#加上括号就能直接调用执行这个的方法

print getattr(Foo,"country")

print getattr(obj,"country")#使用对象也能找到静态字段

1.3.增加对象或者类的成员

动态的增加对象或者类中的成员

#!/usr/bin/env python

# -*-coding:utf-8-*-

class Foo(object):

country = "china"

def __init__(self, name):

self.name = name

def f(self):

print "this is function f.name = ", self.name

obj = Foo("abc")

setattr(obj, "age", 19) #增加普通字段

setattr(obj, "show", lambda num: num +1) #增加普通方法

setattr(Foo, "tel", "+086") #增加静态字段

print obj.age

print Foo.tel

print obj.show(10)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#!/usr/bin/env python

# -*-coding:utf-8-*-

classFoo(object):

country="china"

def __init__(self,name):

self.name=name

deff(self):

print"this is function f.name = ",self.name

obj=Foo("abc")

setattr(obj,"age",19)#增加普通字段

setattr(obj,"show",lambda num:num+1)#增加普通方法

setattr(Foo,"tel","+086")#增加静态字段

print obj.age

print Foo.tel

print obj.show(10)

执行结果

19

+086

11

1

2

3

19

+086

11

1.4.使用delattr动态的删除类或者方法成员

演示代码

#!/usr/bin/env python

# -*-coding:utf-8-*-

class Foo(object):

country = "china"

def __init__(self, name):

self.name = name

def f(self):

print "this is function f.name = ", self.name

obj = Foo("abc")

print getattr(obj, "name")

delattr(obj, "name") #删除掉了对象的普通字段name

print getattr(obj, "name")

print getattr(Foo, "country")

delattr(Foo, "country") #删除掉类的静态字段

print getattr(Foo, "country") #打印时说找不到些成员,报错

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#!/usr/bin/env python

# -*-coding:utf-8-*-

classFoo(object):

country="china"

def __init__(self,name):

self.name=name

deff(self):

print"this is function f.name = ",self.name

obj=Foo("abc")

print getattr(obj,"name")

delattr(obj,"name")#删除掉了对象的普通字段name

print getattr(obj,"name")

print getattr(Foo,"country")

delattr(Foo,"country")#删除掉类的静态字段

print getattr(Foo,"country")#打印时说找不到些成员,报错

执行结果

Traceback (most recent call last):

File "D:/????/python/????????/day08/blog/fanshe.py", line 17, in

abc

print getattr(obj, "name")

AttributeError: ‘Foo‘ object has no attribute ‘name‘

1

2

3

4

5

Traceback(most recent call last):

File"D:/????/python/????????/day08/blog/fanshe.py",line17,in

abc

print getattr(obj,"name")

AttributeError:‘Foo‘objecthas no attribute‘name‘

二.在当前模块中使用反射

获取到对应的模块.

#!/usr/bin/env python

# -*-coding:utf-8-*-

import sys

data = "abc"

def f1():

print "f1 function"

def f2():

print "f2"

this_module = sys.modules[__name__]

print hasattr(this_module, "data") #使用反射

f1_get = getattr(this_module, "f1") #使用反射获取

f1_get()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#!/usr/bin/env python

# -*-coding:utf-8-*-

import sys

data="abc"

def f1():

print"f1 function"

def f2():

print"f2"

this_module=sys.modules[__name__]

print hasattr(this_module,"data")#使用反射

f1_get=getattr(this_module,"f1")#使用反射获取

f1_get()

以上是反射对类,对象,模块成员操作的基本方法.

三.使用字符串自动导入模块

依据传入的字符串,自动导入模块.类似上文的方法反射

import importlib

my_moudle_name = "lib.aa"

aa = importlib.import_module(my_moudle_name)

print(aa)

print(aa.C().name)

1

2

3

4

5

6

7

import importlib

my_moudle_name="lib.aa"

aa=importlib.import_module(my_moudle_name)

print(aa)

print(aa.C().name)

执行结果

ait24

1

2

ait24

原文地址:http://www.cnblogs.com/yanzi-meng/p/7930283.html

http://www.jmfq.cn/news/4895713.html

相关文章:

  • 海外人才招聘网站/百度竞价账户
  • 招聘网站做两份简历/少儿编程培训机构排名前十
  • 网站建设培训龙岗/外贸网络推广公司
  • 网站建设费用模板/武汉网站推广排名
  • 企业网站管理的含义及内容/成都网络营销
  • 科协网站页建设的意义/旺道网站优化
  • 网站建设验收意见/电商网站开发平台有哪些
  • 做兼职的设计网站有哪些/惠州seo网站排名
  • 伴奏在线制作网站/天津seo优化排名
  • 宣传广告牌图片/官网关键词优化价格
  • 上海装修公司网站建设/橘子seo查询
  • 重庆找工作哪个网站好/巨量关键词搜索查询
  • wordpress 扫描工具/上海aso优化公司
  • 电子商务网站建设计划书/建网站建设
  • 网站前置审批怎么做/网络营销推广合作
  • 众筹网站建设/关键词歌词打印
  • 西部网站管理助手/百度认证证书
  • 网站中怎么插入flash/sem广告投放是做什么的
  • 做货代哪个网站上好找客户/百度一下 你知道首页
  • 注册门户网站/网站优化排名软件
  • 深圳 旅游 网站建设/网络营销收获与体会
  • 做企业展示版网站贵吗/做百度关键词排名的公司
  • 做网站域名后缀选择/电商平台运营方案思路
  • 做网络私活的网站/核心关键词如何优化
  • 如何写代码做网站/营业推广方案
  • 网站建设合同标准版/站长之家音效
  • 整站seo哪家服务好/推广平台 赚佣金
  • 做程序开发的网站/百度seo学院
  • html5购物网站模板/搭建网站工具
  • 台州做网站是什么/关于seo如何优化