python __dict__

test_\@.py

#!/usr/bin/env python2
#-*- coding: utf-8 -*-

def args(*args, **kwargs):
def _decorator(func):
print "befor ", func.__dict__
func.__dict__.setdefault(‘options‘, []).insert(0, (args, kwargs))
print ‘end ‘, func.__dict__
return func
return _decorator

@args(‘-p‘, ‘--pp‘, type=‘int‘)
@args(‘-e‘, ‘--ee‘, type=‘int‘)
def set(pp, ee):
print ‘---------‘, pp, ee

def test():
set(11, 22)
print "\ndir(set) ------"
print dir(set)
print "\nset.__dict__ -------"
print set.__dict__
print "\ngetattr(set, ‘options‘) --------"
print getattr(set, ‘options‘)

if __name__ == "__main__":
test()

执行结果

befor {}
end {‘options‘: [((‘-e‘, ‘--ee‘), {‘type‘: ‘int‘})]}
befor {‘options‘: [((‘-e‘, ‘--ee‘), {‘type‘: ‘int‘})]}
end {‘options‘: [((‘-p‘, ‘--pp‘), {‘type‘: ‘int‘}), ((‘-e‘, ‘--ee‘), {‘type‘: ‘int‘})]}
--------- 11 22

dir(set) ------
[‘__call__‘, ‘__class__‘, ‘__closure__‘, ‘__code__‘, ‘__defaults__‘, ‘__delattr__‘, ‘__dict__‘, ‘__doc__‘, ‘__format__‘, ‘__get__‘, ‘__getattribute__‘, ‘__globals__‘, ‘__hash__‘, ‘__init__‘, ‘__module__‘, ‘__name__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__setattr__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘func_closure‘, ‘func_code‘, ‘func_defaults‘, ‘func_dict‘, ‘func_doc‘, ‘func_globals‘, ‘func_name‘, ‘options‘]

set.__dict__ -------
{‘options‘: [((‘-p‘, ‘--pp‘), {‘type‘: ‘int‘}), ((‘-e‘, ‘--ee‘), {‘type‘: ‘int‘})]}

getattr(set, ‘options‘) --------
[((‘-p‘, ‘--pp‘), {‘type‘: ‘int‘}), ((‘-e‘, ‘--ee‘), {‘type‘: ‘int‘})]

dict.py

#!/usr/bin/env python2
#-*- coding: utf-8 -*-

class Person:
def __init__(self,_obj):
self.__dict__.update(_obj)

if __name__ == "__main__":
person = Person({‘name‘:"n", "age":‘3‘})
print person.name
print person.age
print person.__dict__
print Person.__dict__

执行结果

n
3
{‘age‘: ‘3‘, ‘name‘: ‘n‘}
{‘__module__‘: ‘__main__‘, ‘__doc__‘: None, ‘__init__‘: <function __init__ at 0x7f606e65cb90>}

时间: 2024-10-15 07:35:12

python __dict__的相关文章

Python __dict__与dir()区别

Python __dict__与dir() Python __dict__与dir __dict__属性 dir函数 结论 转载请标明出处(http://blog.csdn.net/lis_12/article/details/53521554). Python下一切皆对象,每个对象都有多个属性(attribute),Python对属性有一套统一的管理方案. __dict__与dir()的区别: dir()是一个函数,返回的是list: __dict__是一个字典,键为属性名,值为属性值: di

Python __dict__属性详解

我们都知道Python一切皆对象,那么Python究竟是怎么管理对象的呢? 1.无处不在的__dict__ 首先看一下类的__dict__属性和类对象的__dict__属性 # -*- coding: utf-8 -*- class A(object): """ Class A. """ a = 0 b = 1 def __init__(self): self.a = 2 self.b = 3 def test(self): print 'a n

python __dict__ 跟 dir()的区别

__dict__:要是对象的话返回的是一个对象自身的实例属性.不包括类的属性:要是类的__dict__则不包括父类的属性,只包含自身类属性[方法.类变量],不包括实例属性.正是这样.每个实例的实例属性才会互不影响. dir():返回的是对象的所有属性.包括父类的属性 python一切皆对象.类本身也有__dict__函数.跟dir()函数.那么类与实例的两个函数有没有区别呢? 答案是:有的 class A(): Tang = "tang" def __init__(self): sel

python 多态这一部分的知识点相关应用

类型这块 type 一个对象的时候,这个对象的类型,总是这个对象所属的类 type任何一个类,它的类型都是type,type是所有数据类型和类的鼻祖 type的类型是它本身 type  = type(type) 函数的类型就是函数 python是一种动态语言,一个鸭子类型举例:动态python变量,在赋值的时候,赋值号(=)右边的数据类(list,set,float等)对象是什么类型,他就是什么类型 a. 常规创造的类 总是有几个特性: 能够实例化 能有属性 能有方法 b.元类能够帮助你创造不同

python语法基础-面向对象-基础-长期维护

###############    类的基本操作    ############## """ 类的基本认识: 1,类就是一个模子 2,dict,list都是类,具体的一个字典和列表就是一个类的实例,就是对象, 3,类定义的时候,类名后面可以有括号,也可以没有括号, 4,类传参是通过__init__方法来传参的,只要实例化一个对象,就会调用这个方法, 5,一个类有三要素:类名,属性,方法,类名要大写,类名使用大驼峰命名法, 6,self代表类的实例,必须要有,名字不必须是se

类的命名空间&amp;组合

类的命名空间◆类中的静态变量可以被类调用也可以被对象调用◆对不可变数据类型来说,类变量最好用类名操作 class Person: money = 0 mother = Person() father = Person() Person.money += 1000 Person.money += 1000 print(Person.money) ◆对于可变数据类型来说,对象的修改是共享的,重新赋值是独立的 class Course: langauage = 'Chinese' def __init

类的继承、派生、组合、菱形的继承、多态

类的继承 继承是一种新建的类的方式,新建的类成为子类,被继承的类称为父亲 继承的特性是:子类会遗传父亲的属性 继承是类与类之间的关系 使用继承目的,可以减少代码的咒余 在python中,父类和子类只有在继承的时候才会产生 继承是为了拿到父类的所有东西 class Parent_Foo: def __init__(self,first_name,money,car,house) self.first_name = first_name self.car = car self.house =hous

面对对象进阶

面对对象进阶 类的继承 python当中,父类和子类(派生类),父类和子类只有在继承的时候才会产生 继承是为了拿到父类的所有东西 class Parent_Foo: #父类 def __init__(self, first_name, money, car, house): self.first_name = first_name self.money = money * 0.5 print('继承财产扣掉一半') self.car = car self.house = house def fi

类特殊成员(属性和方法)

Python下划线命名模式 - 小结 以下是一个简短的小结,即"速查表",罗列了我在本文中谈到的五种Python下划线模式的含义: 因为python中所有类默认继承object类.而object类提供了了很多原始的内建属性和方法,所以用户自定义的类在Python中也会继承这些内建属性.可以使用dir()函数可以查看,虽然python提供了很多内建属性但实际开发中常用的不多.而很多系统提供的内建属性实际开发中用户都需要重写后才会使用.对于python来说,属性或者函数都可以被理解成一个属