簡體   English   中英

為什么python允許為同一個類創建不同的屬性集?

[英]Why does python allow to make different set of attributes for same class?

我剛剛開始使用python,在java中,兩個相同類型的不同實例具有不同的值,但它不允許它們具有不同的屬性。 但,

class Point:
    pass

p1 = Point()
p1.x = 0
p1.y = 0
p2 = Point()
p2.z = 0
p2.w = 1355135

此代碼不會產生任何錯誤。 所以我假設它是一種語言功能。 但我不明白為什么python允許兩個相同類型的實例具有不同的屬性?

它如何幫助設計代碼?

因為Python是一種動態語言。 Python對象主要是一個dict(包含實例屬性)+對基類的引用(也是對象)+一些鈎子在基類上查看類屬性時它們在實例的dict中不存在。 FWIW你甚至可以在運行時根據需要更改對象的類型。

它如何幫助設計代碼? 好吧,能夠在運行時動態添加/替換任意實例和類屬性(包括方法)使得生活變得更加容易。

因為Python是一種動態語言。

JavaScript例如會做同樣的事情
(而不是JavaScript與Python非常相似)。

“它如何幫助設計代碼?”
它允許程序員更自由地將編譯器靜態化
語言帶走了一些安全感或安全感。
但這一般是主觀的,有些人更喜歡靜態語言,
其他人更喜歡動態的。

它如何幫助設計代碼?

它沒有。 這是我們為擁有一個完全動態的類系統而付出的代價。 這意味着我們不僅不必在某處單獨聲明成員,例如,我們可以將初始化的部分委托給輔助方法或裝飾器。 或者甚至可以在運行時完成更多功能的元編程,而無需單獨的語言。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM