方法的 __getattr__ 等效项

发布于 2024-09-26 03:48:26 字数 69 浏览 6 评论 0原文

当未找到属性时,将调用 object.__getattr__。是否有等效的方法来拦截未定义的方法?

When an attribute is not found object.__getattr__ is called. Is there an equivalent way to intercept undefined methods?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

暮色兮凉城 2024-10-03 03:48:26

没有什么区别。方法也是一种属性。 (但是,如果您希望该方法具有隐式“self”参数,则必须做更多工作来“绑定”该方法)。

There is no difference. A method is also an attribute. (If you want the method to have an implicit "self" argument, though, you'll have to do some more work to "bind" the method).

染柒℉ 2024-10-03 03:48:26

方法也是属性。 __getattr__ 对它们的作用相同:

class A(object):

  def __getattr__(self, attr):
    print attr

然后尝试:

>>> a = A()
>>> a.thing
thing
>>> a.thing()
thing
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not callable

Methods are attributes too. __getattr__ works the same for them:

class A(object):

  def __getattr__(self, attr):
    print attr

Then try:

>>> a = A()
>>> a.thing
thing
>>> a.thing()
thing
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not callable
櫻之舞 2024-10-03 03:48:26

你没有返回任何东西。

class A(object):

  def __getattr__(self, attr):
    return attr

应该有效

you didn't return anything.

class A(object):

  def __getattr__(self, attr):
    return attr

should work

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文