Convenient syntax for `setproperty!`
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 35/100
調査の方向性
まず既存の getattr の処理と、参照されている PyCall.jl の issue 11 を読み、次に Python の属性代入が Julia の setproperty! に到達するまでを追跡します。mutable な MyStruct を使って例を再現し、obj.x = 2 によって値が更新され、obj.x が AttributeError なしで 2 を出力することを確認します。
索引モデルが issue の本文から書いたものです。
説明
I couldn't find an earlier issue but this seems like something that would be a common issue, so please share if there's a related one.
Basically, I think the following code should work:
from julia import Main as jl
jl.eval("""
mutable struct MyStruct
x::Int
end
""")
obj = jl.MyStruct(1)
obj.x = 2
However, it gives the following error:
Traceback (most recent call last):
File "/Users/mcranmer/Documents/ManimAnimation/SR/setting_demo.py", line 10, in <module>
obj.x = 2
AttributeError: 'PyCall.jlwrap' object has no attribute 'x'
I couldn't completely figure out where __setattr__ should be overloaded, but I feel like it would be possible to enable this. For the record, __getattr__ seems to work fine; it's just __setattr__ that doesn't work.
As a temporary workaround, I am using the function:
from julia import Main as jl
jl.eval("""
import Base: setproperty!
setproperty!(obj, field::String, val) = setproperty!(obj, Symbol(field), val)
""")
set = jl.setproperty_b
jl.eval("""
mutable struct MyStruct
x::Int
end
""")
obj = jl.MyStruct(1)
set(obj, "x", 2)
print(obj.x)
# 2
But I think obj.x = 2 should do this automatically.
(needed to overload setproperty! - see https://github.com/JuliaPy/PyCall.jl/issues/11)
cc @mkitti @marius311 @stevengj
- 主要言語
- Python
- スター
- 893
- フォーク
- 101
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
JuliaPy/pyjulia のほかの issue
-
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 20/100
-
難易度 3/5 1〜2日 初心者へのやさしさ 48/100
-
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
JuliaPy/pyjulia の issue をすべて見る
似ている issue
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
NousResearch/hermes-agent#147104 ·
メンテナーはふだん 1 日以内に返信
-
[oblt-aw][autodoc] Document new required `shared-org-key` input for `obs-aw-dependency-review`対応中かも @github-actions が今日担当しました。 オープン
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
メンテナーはふだん 1 日以内に返信
-
bot-triaged module: inductor oncall: pt2 topic: fuzzer triaged
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
getchaintips leaves out the active tip once a header is staged on it, where Core always lists itオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
btclib-org/btclib-node#2158 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
patrick-hudson/put.gd-desktop#979 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信