python - 如果我更改了类中的函数名称,该函数会发生什么变化?

考虑以下代码

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

我很困惑

  1. denny.password = 'code:456' 不会对原始类中的return 'code:123' 做任何更改,对吗?
  2. 原始方法password(self)是否被破坏了?
  3. 修改函数名后,弹出一个新的函数code:456()?

谢谢!

最佳答案

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/

相关文章:

javascript - 如何返回 array.reduce 中的对象?

android - 在 Android OpenGL ES 上只能看到没有几何图形的 glClear

regex - 如果使用 linux 命令行工具在文本文件的下一行中满足条件,则替换换行符

c++ - 如何使这个递归函数更快? (四叉树)

python - Pandas : Concat rows of a dataframe with

c# - 处理没有并发的任务列表

python - 找不到 openai 命令(mac)

c++ - 优化静态字符串的字符串存储

java - Maven:如何查找依赖项

r - 更改 geom_point 的颜色以获得最大 y 值