我有A类和内部B类
它们位于不同的文件中(假设a.py和b.py)
我需要在B类方法中更改A.x,不发送“自我” 。即self.inner = B(),而不是self.inner = B(self)。我无法发送“自我”,因为A类位于我不能触摸的生成文件中。
我该怎么做?
如果我可以发送自我,那就是我会这样做的方式
#a.py
from b import B
class A():
def __init__(self):
self.x = 1
#this would be self.inner = B() instead
self.inner = B(self)
example = A()
print(example.x)
#b.py
class B():
def __init__(self, parent):
self.change(parent)
def change(self, parent):
parent.x = 2
答案 0 :(得分:1)
您可以尝试使用$ grep -E '^[[:space:]]*(class|description)[[:space:]]' file
class BarFoo001(BarFooBase):
description = 'here's the stuff I want'
$ awk 'sub(/^[[:space:]]*(class|description =)[[:space:]]+/,"")' file
BarFoo001(BarFooBase):
'here's the stuff I want'
模块(尽管正如@Slam所建议的那样,建议不要这样做):
inspect
答案 1 :(得分:0)
我相信您可以使用inspect
模块将黑魔法变成圆顶。
但是我建议您重新考虑是否确实需要此功能以及原因。因为这是一个全面打破OOP和理智的体系结构思想的好例子,所以除非明确为您提供处理方法,否则不要更改外部作用域。如果您不遵循这个主意,您将获得超级紧密耦合的代码。