如何从python类函数访问对self的调用

Chiffa

具体来说,我有一个用户定义的类型的类

class Foo(object):
  def __init__(self, bar):
    self.bar = bar

  def bind(self):
    val = self.bar
    do_something(val)

我需要:

1)能够调用该类(而不是该类的实例)以恢复self.xxx该类内定义的所有属性。

对于类的实例,可以通过先执行f = Foo('')然后再进行来完成f.__dict__有没有办法针对一个类而不是一个实例呢?如果是,怎么办?我希望Foo.__dict__能回来,{'bar': None}但这种方式行不通。

2)能够访问self.xxx从类的特定函数调用的所有参数。例如,我想做Foo.bind.__selfparams__并得到回报['bar']有没有办法做到这一点?

埃里克·卡普伦

假设我正确理解了您要执行的操作,那么使用动态语言很难做到这一点。本质上,这意味着遍历该类存在的所有实例,然后收集这些实例上的所有设置属性。尽管并非不可行,但我将从设计和性能的角度来质疑这种方法的实用性。

更具体地说,您所说的是“类中定义的所有self.xxx属性”,但是这些东西根本没有定义,至少没有在一个地方定义过,它们随着越来越多的课堂变得生动起来。现在,我并不是说您的所有实例都设置了不同的属性,但是它们可能并且为了拥有可靠的通用解决方案,您实际上必须跟踪实例可能对自己所做的任何事情。因此,除非您考虑使用静态分析方法,否则我不会看到一种干净有效的方法(实际上,即使使用动态语言来进行静态分析也无济于事)。

一个简单的例子来证明我的观点:

class Foo(object):
    def __init__(self):
        # statically analysable
        self.bla = 3

        # still, but more difficult
        if SOME_CONSTANT > 123:
            self.x = 123
        else:
            self.y = 321

    def do_something(self):
        import random
        setattr(self, "attr%s" % random.randint(1, 100), "hello, world of dynamic languages!")

    foo = Foo()
    foo2 = Foo()
    # only `bla`, `x`, and `y` attrs in existence so far
    foo2.do_something()
    # now there's an attribute with a random name out there
    # in order to detect it, we'd have to get all instances of Foo existence at the moment, and individually inspect every attribute on them.

而且,即使您要迭代存在的所有实例,也只会获得您感兴趣的内容的快照,而不是所有可能的属性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从Python调用类的C ++函数

来自分类Dev

从访问私有属性的类中调用外部函数

来自分类Dev

如何从python中的类调用外部函数

来自分类Dev

Python Decorator类:如何正确计数with块中的函数调用

来自分类Dev

如何在PHP类方法的私有函数中访问self ::?

来自分类Dev

如何通过指针从函数访问类的成员?

来自分类Dev

python 2.7-如何调用父类构造函数

来自分类Dev

从基础调用访问派生的crtp类的函数

来自分类Dev

Python如何访问类函数变量

来自分类Dev

在Python中访问匿名类的函数

来自分类Dev

Python Multiprocessing调用类函数

来自分类Dev

访问python枚举成员时如何检测和调用函数

来自分类Dev

线程可以调用类函数并访问类数据吗?

来自分类Dev

OOP-Python-如何在类中调用函数并避免由于self引起的参数丢失错误?

来自分类Dev

如何保存在Python的类调用中插入的函数的数量?

来自分类Dev

如何在Python3中的类中调用函数

来自分类Dev

在python中调用类时在类中调用函数

来自分类Dev

如何从Python调用类的C ++函数

来自分类Dev

访问变量从类构造函数到python中的类函数

来自分类Dev

如何从python中的不同文件调用类和函数

来自分类Dev

Django / Python:如何从子类中的父类调用函数?

来自分类Dev

如何访问被调用函数中的结构元素?

来自分类Dev

如何从React类访问自动绑定的函数?

来自分类Dev

如何从对象内部函数调用类函数

来自分类Dev

Python:从活动类调用函数

来自分类Dev

Python - 如何从类调用外部函数然后返回到类

来自分类Dev

函数如何访问类的上下文

来自分类Dev

在 Python 中调用类函数

来自分类Dev

如何确保某些类和函数调用可以访问所有 GUI 输入变量?

Related 相关文章

  1. 1

    如何从Python调用类的C ++函数

  2. 2

    从访问私有属性的类中调用外部函数

  3. 3

    如何从python中的类调用外部函数

  4. 4

    Python Decorator类:如何正确计数with块中的函数调用

  5. 5

    如何在PHP类方法的私有函数中访问self ::?

  6. 6

    如何通过指针从函数访问类的成员?

  7. 7

    python 2.7-如何调用父类构造函数

  8. 8

    从基础调用访问派生的crtp类的函数

  9. 9

    Python如何访问类函数变量

  10. 10

    在Python中访问匿名类的函数

  11. 11

    Python Multiprocessing调用类函数

  12. 12

    访问python枚举成员时如何检测和调用函数

  13. 13

    线程可以调用类函数并访问类数据吗?

  14. 14

    OOP-Python-如何在类中调用函数并避免由于self引起的参数丢失错误?

  15. 15

    如何保存在Python的类调用中插入的函数的数量?

  16. 16

    如何在Python3中的类中调用函数

  17. 17

    在python中调用类时在类中调用函数

  18. 18

    如何从Python调用类的C ++函数

  19. 19

    访问变量从类构造函数到python中的类函数

  20. 20

    如何从python中的不同文件调用类和函数

  21. 21

    Django / Python:如何从子类中的父类调用函数?

  22. 22

    如何访问被调用函数中的结构元素?

  23. 23

    如何从React类访问自动绑定的函数?

  24. 24

    如何从对象内部函数调用类函数

  25. 25

    Python:从活动类调用函数

  26. 26

    Python - 如何从类调用外部函数然后返回到类

  27. 27

    函数如何访问类的上下文

  28. 28

    在 Python 中调用类函数

  29. 29

    如何确保某些类和函数调用可以访问所有 GUI 输入变量?

热门标签

归档