python3 函数中的反射

class Foo:
    def __init__(self,name):
        self.name=name

    def func(self):
        print(‘--------------.func‘)

print(hasattr(Foo,‘func‘))
f=Foo(‘egon‘)
print(hasattr(f,‘x‘))
f.x=1
print(getattr(f,‘x‘))
print(getattr(f,‘func‘))
if hasattr(f,‘func‘):
    aa=getattr(f,‘func‘)
    aa()
print(getattr(f,‘y‘,None))

# f.y=1 #f y 1
setattr(f,‘y‘,1)
print(f.__dict__)

delattr(f,‘y‘)
print(f.__dict__)

# print(Foo.__dict__)
# print(f.__dict__)

  

## 打印
True
False
1
<bound method Foo.func of <__main__.Foo object at 0x000001B32824D0F0>>
--------------.func
None
{‘x‘: 1, ‘y‘: 1, ‘name‘: ‘egon‘}
{‘x‘: 1, ‘name‘: ‘egon‘}

  

时间: 2024-10-05 09:07:14

python3 函数中的反射的相关文章

python3全栈开发-内置函数补充,反射,元类,__str__,__del__,exec,type,__call__方法

一.内置函数补充 1.isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object): pass obj = Foo() print(isinstance(obj, Foo)) #结果为True 2.issubclass(sub, super)检查sub类是否是 super 类的派生类 class Foo(object): pass class Bar(Foo): pass print(issubclass(Bar, Foo)) #结果为True

python中的反射

在绝大多数语言中,都有反射机制的存在.从作用上来讲,反射是为了增加程序的动态描述能力.通俗一些,就是可以让用户参与代码执行的决定权.在程序编写的时候,我们会写很多类,类中又有自己的函数,对象等等.这些类和函数都是为了后序代码服务,程序员决定什么时候用到哪一个类,什么时候调用某个函数.但很多时候,我们需要根据用户的需求来决定执行哪一段代码块.用户可能是通过点击,输入数据,或者其他方式发出指令,反射则将用户的指令传递到需要执行的那一段代码块.这个过程是自动执行的,无需人工去核对用户指令是否应该执行那

python015 Python3 函数

Python3 函数函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函数,这被叫做用户自定义函数. 定义一个函数你可以定义一个由自己想要功能的函数,以下是简单的规则:函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ().任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数.函数的第一行语句可以选择性地使用文档字符串-用于存放函数

Python函数中的参数(二)

当使用混合特定的参数匹配模型时,Python将会遵循以下有关顺序的法则: 1.在函数调用中,参数必须以这样的顺序出现:任何位置参数(Value).任何关键字参数(name = Value)和*sequence形式的组合,最后是**dict形式 2.在函数头部,参数必须以如下的顺序出现:任何一般参数.任何默认参数.如果有的话,是*name(在Python3.0中是*)的形式,然后是任何name或name=value keyword-only参数,最后是**name形式 Python内部是使用以下的

【译】深入理解python3.4中Asyncio库与Node.js的异步IO机制

转载自http://xidui.github.io/2015/10/29/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3python3-4-Asyncio%E5%BA%93%E4%B8%8ENode-js%E7%9A%84%E5%BC%82%E6%AD%A5IO%E6%9C%BA%E5%88%B6/ 译者:xidui原文: http://sahandsaba.com/understanding-asyncio-node-js-python-3-4.html 译者前言 如

python学习记录 - python3.x中如何实现print不换行

python3.x中如何实现print不换行 大家应该知道python中print之后是默认换行的, 那如何我们不想换行,且不想讲输出内容用一个print函数输出时,就需要改变print默认换行的属性, 方法如下: print('contents', end='[email protected]#$%^&*') end就表示print将如何结束,默认为end="\n"(换行) 栗子: print("祝各位身体健康") print("!")

python3 -&gt; 函数注释 Function Annotations

Python 3.X新增加了一个特性(Feature),叫作函数注释 Function Annotations 它的用途虽然不是语法级别的硬性要求,但是顾名思义,它可做为函数额外的注释来用. Python中普通的函数定义如下: def func(a, b, c): return a + b + c >>> func(1, 2, 3) 6 添加了函数注释的函数会变成如下形式: def func(a: 'spam', b: (1, 10), c: float) -> int: retu

python中的反射和自省

本文主要介绍Python中的反射和自省,以及该机制的简单应用 熟悉Java的程序员,一定经常和Class.forName打交道.即使不是经常亲自调用这个方法,但是在很多框架中(spring,eclipse plugin机制)都依赖于JAVA的反射和自省能力.而在python中,也同样有着强大的反射和自省能力,本文将做简单的介绍. 首先看一下自省,介绍一下几个重要的函数: dir函数,传入的参数是对象,返回该对象的所有属性和函数列表: 如: >>> import string >&g

python3.X中简单错误处理

1.print >>> print 'hello world'  SyntaxError: Missing parentheses in call to 'print'   >>> Python版本更新后,3.X的版本中去掉了很多的函数,在3.X版本的python中,print需要加上括号 如: >>> print ('hello world')    hello world    >>> 另:将数据输出为一组时,python2.x直