go-python / go-python/gpython

How to get `globals()` inside Go bounded method?

未關閉
#211 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
主要語言
Go
星號
1k
分支
105
PR 合併指標
30 天內沒有已合併 PR

描述

## Simple description

I cannot find a way to access `globals()` within a bounded method in GoLang.

I expose a type into module, like `moduleImpl.Globals["Foo"] = FooType`, and add methods to FooType by `FooType.Globals["bar"] = MustNewMethod(..., someGoMethod, ...)`.

I cannot access module's global variables inside `someGoMethod`.

## Why I need this feature

I just attach different `zap.Logger` to multiple `py.Context`s. I attach `logger` as a module's global variable, by using

```
ctx.GetModule("name").Globals["logger"] = &pyLoggerObject{logger}
```

but I cannot find a way to use this logger inside bounded methods.

---

I found I can create a py.Type and attach the type to module global dynamically. I can somehow read module globals by this trick. But Is there a elegant way to archive that?

```
m = ctx.GetModule("module")
m.Globals["Foo"] = NewFooType(m)
```

貢獻指南

這個儲存庫沒有索引到貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。