Discuss / Python / 望解惑,弄不懂为啥

望解惑,弄不懂为啥

Topic source

🍉

#1 Created at ... [Delete] [Delete and Lock User]
form types import MethodType
class Student(object):

    def set_age(self,age):
        self.age = age
#---------代码如上, 运行如下-----------
#1:
s = Student()
s.set_age = MethodType(set_age,s)  #运行这里会显示 'set_age' 不存在
s.set_age #直接这样,也会显示 'set_age' 不存在
#但是....可以直接:
s.age = 25  # 可以直接赋值,
# 所以搞不懂的地方在于,为啥'set_age'会显示不存在,然后绑定方法,这个实际作用的地方在哪里。

我运行s.set_age是存在的,怕不是你下面这句话没注释哦

s.set_age = MethodType(set_age,s)  #运行这里会显示 'set_age' 不存在

还有一点,MethodType本来就是给实例动态绑定方法的,故MethodType第一个参数一定是类外自定义函数的函数名

门小甲

#3 Created at ... [Delete] [Delete and Lock User]

根据你这个缩进,是不是set_age定义到Student类里面去了?

Jerry bonus

#4 Created at ... [Delete] [Delete and Lock User]

对的,教程里是说在实例内部定义一个方法,你这个是在类中定义的,所以出现了问题


  • 1

Reply