![](/img/trans.png)
[英]Is it possible to assign a module to different objects and use variables of imported module in Python?
[英]Python assign local value to attribute in imported module
在 Script1 中,我定義了 class1。
要啟動 class1,您只需要一個變量 x,但它具有啟動 class 不需要的其他屬性y
。 當我運行腳本 1 時,它將值 10 分配給在if __name__ == __main__:
行之后聲明的 y。
######Script1#########
Class class1:
def __init__(self,x):
self.x = x
self.y = y
if __name__ == '__main__':
y = 10
class_instance = class1(100)
print(class_instance.y) #prints 10 or assigns 10 to class.y
在 script2 我導入 class1 並嘗試為y
賦值,但它給了我NameError
。 我嘗試在 class1 中將 y 聲明為 global,以及其他一些東西,但它不起作用。 我知道它與命名空間和范圍有關 - 任何指向正確方向的指針都會有很大幫助。 謝謝。
#### script2 ######
from script1 import *
if __name__ == '__main__':
y = 10
class_instance = class1(200)
print(class_instance.y) #gives NameError
NameError: name 'y' is not defined
你想要的是一個可選的keyword argument
( https://docs.python.org/3/tutorial/controlflow.html#keyword-arguments ):
Class class1:
def __init__(self,x, y=10):
self.x = x
self.y = y
if __name__ == '__main__':
class_instance = class1(100)
print(class_instance.y) #prints 10
instance2 = class1(100,200)
print(instance2.y) #prints 200
instance3 = class1(100,y=300)
print(instance3.y) #prints 300
如果您願意,這將允許您提供y
值。 如果您不提供y
值,它將使用默認值10
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.