讓 Julia 像 Python 一樣擁有物件 property
Julia 的物件都有屬性,但這需要寫在型別中事先定義。但如果要為沒有任何屬性的型別增加屬性要怎麼做?
Julia 的屬性存取是來自 Base.getproperty
及 Base.setproperty!
兩個方法。
如果我們這樣定義。
1 | julia> struct Foo end |
來測試不同的 property。
1 | julia> foo = Foo() |
以及設定的部份。
1 | julia> Base.setproperty!(::Foo, x::Symbol, v) = nothing |
不過要注意的是,如果對本身就有屬性的型別增加 Base.getproperty
及 Base.setproperty!
兩個方法,會去更動到原先的屬性存取行為喔!這邊要注意一下。