考虑以下代码
class Bank_acount:
def password(self):
return 'code:123'
现在考虑如下执行类时的几种情况
denny = Bank_acount()
denny.password() # function call
>> 'code:123'
下一步
denny.password # password is function name
>> "bound method Bank_acount.password of <__main__.Bank_acount object at 0x00000167820DDCA0>>"
现在如果我改变函数名
denny.password = 'code:456' # I changed the function name
我得到了
denny.password
>> 'code:456'
但是,
denny.password()
>>TypeError: 'str' object is not callable
我很困惑
denny.password = 'code:456'
不会对原始类中的return 'code:123'
做任何更改,对吗?password(self)
是否被破坏了?谢谢!
最佳答案
Has the original method password(self) been destroyed?
该方法仍然存在,但它已被另一个仅用于 denny
实例的值覆盖。
a new function code:456() pops out?
这不是函数;正如错误所说,字符串不可调用
您可以使用单独的属性更改code
,而不是通过函数更改
class Bank_acount:
def __init__(self, code):
self.code = code
def password(self):
return 'code:' + str(self.code)
denny = Bank_acount(123)
print(denny.password())
denny.code = 456
print(denny.password())
https://stackoverflow.com/questions/73096423/