我有自定义 getter 的类(class),所以我有需要使用自定义 getter 的情况,也有需要使用默认 getter 的情况。
所以考虑跟随。
如果我这样调用对象c的方法:
c.somePyClassProp
在这种情况下,我需要调用自定义 getter,getter 将返回 int 值,而不是 Python 对象。 但是如果我以这种方式调用方法:
c.somePyClassProp.getAttributes()
在这种情况下,我需要使用默认 setter ,首先返回需要是 Python 对象,然后我们需要调用返回的 python 对象的 getAttributes 方法(来自 c.somePyClassProp)。 请注意,somePyClassProp 实际上是类的属性,它是另一个 Python 类实例。
那么,Python 中有没有什么方法可以知道在第一个方法调用后是否还会调用其他方法?
请您参考如下方法:
没有。 c.someMethod 是一个独立的表达式;它的评估不会受到使用结果的环境的影响。如果有可能实现你想要的,这将是结果:
x = c.someMethod
c.someMethod.getAttributes() # Works!
x.getAttributes() # AttributeError!
这会让人很困惑。
不要试图使 c.someMethod 的行为根据将要执行的操作而有所不同,并且如果可能的话,不要使 c.someMethod 成为方法打电话。人们会期望 c.someMethod 返回一个绑定(bind)的方法对象,然后可以调用该对象来执行该方法;只需def以通常的方式定义方法并使用c.someMethod() 调用它。
