错误报告二

dir 和 dict

dir 不区分对象,会打印所有内容。dict当是类调用时会打印所有内容,但当是对象调用时,不会打印其他同类型都有的属性,只会打印自己特有的属性。

def newAtr(classname, parclasss, attrdict):
    newdict = {}
    c = classname.lower()[0]
    for k, v in attrdict.items():
        if not k.startswith('__'):
            newkey = c+'_'+k
            newdict[newkey] = v
    return type('People', (object,), newdict)


class People(object, metaclass=newAtr):
    id = '20151'
    name = 'bh'


class Test:
    id = '20151'
    name = 'bh'


t = Test()
# g = People()
print(t.__dir__())#['__module__', 'id', 'name', '__dict__', '__weakref__', '__doc__', '__repr__', '__hash__', '__str__', '__getattribute__', '__setattr__', '__delattr__', '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__init__', '__new__', '__reduce_ex__', '__reduce__', '__subclasshook__', '__init_subclass__', '__format__', '__sizeof__', '__dir__', '__class__']

print(t.__dict__) #{}
t.sex = '女'
print(t.__dict__) #{'sex': '女'}

猜你喜欢

转载自blog.csdn.net/baidu_40450846/article/details/89003647