Python 为什么不是';t类';新方法在它的dict中?

Python 为什么不是';t类';新方法在它的dict中?,python,Python,简要说明:我正在尝试编辑类的\uuuuu new\uuuu方法的默认参数。我需要访问该方法,我正试图以与访问其其他方法相同的方式获得访问权限-通过其\uuu dict\uuu 但是在这里,我们可以看到它的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu新的方法不在它的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 这是否与\uuuuu new\uuuu是一种静态方法有关?如果是这样,为什么那些不在类的\uu dict\uu中?它们存储在对象

简要说明:我正在尝试编辑类的
\uuuuu new\uuuu
方法的默认参数。我需要访问该方法,我正试图以与访问其其他方法相同的方式获得访问权限-通过其
\uuu dict\uuu

但是在这里,我们可以看到它的
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu新的
方法不在它的
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

这是否与
\uuuuu new\uuuu
是一种静态方法有关?如果是这样,为什么那些不在类的
\uu dict\uu
中?它们存储在对象模型中的什么位置

class A(object):
    def __new__(cls, a):
        print(a)
        return object.__new__(cls)
    def f(a):
        print(a)
   ....:         

In [12]: A.__dict__['f']
Out[12]: <function __main__.A.f>

In [13]: A.__dict__['__new__']
Out[13]: <staticmethod at 0x103a6a128>

In [14]: A.__new__
Out[14]: <function __main__.A.__new__>

In [16]: A.__dict__['__new__'] == A.__new__
Out[16]: False

In [17]: A.__dict__['f'] == A.f
Out[17]: True
A类(对象):
定义新定义(cls,a):
印刷品(a)
返回对象。\uuuu新建\uuuu(cls)
定义f(a):
印刷品(a)
....:         
在[12]中:A..“dict”[f']
出[12]:
在[13]中:A..“dict”[“new”]
出[13]:
在[14]中:一个新的__
出[14]:
在[16]中:A__
Out[16]:假
在[17]中:A.uu dict_uuu['f']==A.f
Out[17]:对

A.uuu dict_uu['new']
是静态方法描述符,其中as
A.uu new_u
是实际的底层函数

如果需要调用该函数,或使用字符串(在运行时)获取该函数,请使用
getattr(a,'.\uuu new'.'

>>A.\u新__
>>>getattr(一个新的)
Python 3.5.1

A类(对象):
定义新定义(cls,a):
印刷品(a)
返回对象。\uuuu新建\uuuu(cls)
定义f(a):
印刷品(a)
>>>A.“dict”[“new”]
>>>新的__
>>>对象。\u新__
>>>A.。uuuu new_uuuuu(A,‘你好’)
你好
>>>A.“dict”[“new”](A,“你好”)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:“staticmethod”对象不可调用
>>>getattr(一个新的)

我不知道你在问什么。为什么你认为
A.\uuuuu dict\uuuuu[''新的\uuuuuu']
对象。\uuuuu新的\uuuuuu
?很好。我已经编辑了这个问题。总的问题是:我还添加了几行代码,表明它的
\uuuuu new\uuuu
处理方式与它的
f
方法不同这是Python3,对吗?
a.\uuu dict\uuuuuu
\uu new\uuuuuuuu
作为一个条目,但它与
a.\uuu new\uuuuu>的对象不同;问题是为什么会出现这种情况,而
A.\uu dict\uuuuuuuu['f']
A.f
是同一个对象。当然,但这与问题中
\uu new\uuuuuu
f
之间的区别无关。
>>> A.__new__
<function A.__new__ at 0x02E69618>
>>> getattr(A, '__new__')
<function A.__new__ at 0x02E69618>