[英]Django/Python API - how can I figure out what class of object a method is expecting to receive?
[英]confusion because i can't figure out what is changing the attribute of the object of a class in python
這是我的代碼`
class Cats:
def __init__(self,name):
self.name=name
#print(self.name,name,"hello")
def change_name(self,new_name):
self.name=new_name
return 0
#print(new_name)
cat1=Cats("lion")
print(cat1)
print(cat1.name)
cat2=cat1.change_name("tiger")
print(cat1.name)
print(cat1)
print(cat2)
**這是 output ,附上我的評論/意見(如果我錯了,請糾正我):** <__main__.Cats object at 0x7f84272d7640>
錯誤,因為我試圖打印 object cat1
lion
看起來不錯,因為我打印了 object 的屬性,並且由於初始化時給出的名稱是 lion,它打印了 lion
tiger
這就是我不明白的。 為什么這個 output 是老虎而不是獅子。 究竟是什么導致了這種變化? Bcoz 當我執行 <<cat2=cat1.change_name("tiger") 時,它應該只將值 0 分配給 cat2,但為什么它更改了 cat1 中的值?
<__main__.Cats object at 0x7f84272d7640>
錯誤 bcoz 我試圖打印 class
0
似乎很好因為 chane_name function 返回分配給 cat2 的 0
我期望 cat1.name 的值保持不變(它應該保持為 lion 而不是更改為 tiger)
當您調用cat1.change_name("tiger")
時,會發生一些事情:
self
綁定到與 cat1 相同的cat1
。cat1.name
從"lion"
更改為"tiger"
change_name
返回0
,而不是Cats
的新實例。 此次調用后, cat1.name
計算結果為"tiger"
,而不是"lion"
,因為值已更改。
print(cat1)
輸出您的“錯誤消息”,因為print
在其參數上隱式調用str
,並且由於Cats
未定義__str__
,因此使用object.__str__
,並生成您看到的字符串。
print(cat2)
output 0
因為這是作為cat1.change_name("tiger")
的返回值分配給cat2
的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.