类定义之外的类的新方法

时间:2019-10-20 07:51:51

标签: python class methods

在Python中,有谁知道重写一个实例化对象方法的更好方法,该方法可以使函数访问类实例(自身)及其所有方法/属性?

下面的一个有效,但是我不喜欢如何使用全局范围将对象a传递到new_f

class A(object):
  def __init__(self):
    self.b = 10
  def f(self):
    return 2 + self.b
  def g(self):
    print(self.f())

a = A()

# simple override case
a.f = lambda: 10 
a.g()

# now I want to have access to property b of the object a
# but it also could be a method of object the object a
def new_f():
  self = a
  return 10+self.b

a.f = new_f
a.g()

1 个答案:

答案 0 :(得分:2)

根据您的用例,一种可能的解决方案是在初始化对象self之前,先将def new_f(self)作为参数来定义函数,例如define A.f = new_f,然后再定义a