Python 3在不同文件中的类之间的作用域?
我已经研究了很久,没有发现有人问过这个特定的问题(所以我可能遗漏了一些简单的问题!),但我在将类划分为不同的.py文件时遇到了困难 情景: Main类导入设置类文件和工作类文件..设置类使用从对象类文件实例化的对象填充列表Python 3在不同文件中的类之间的作用域?,python,python-3.x,class,variables,scope,Python,Python 3.x,Class,Variables,Scope,我已经研究了很久,没有发现有人问过这个特定的问题(所以我可能遗漏了一些简单的问题!),但我在将类划分为不同的.py文件时遇到了困难 情景: Main类导入设置类文件和工作类文件..设置类使用从对象类文件实例化的对象填充列表 工作类希望在该列表中循环并更改每个对象中的值 感谢stovfl在评论中提供了答案。我终于破译了斯托夫的意思:D 我想 下面的代码适用于任何想知道的人: 主要内容: Set_Test.py: class Settings: def __init__(self):
工作类希望在该列表中循环并更改每个对象中的值 感谢stovfl在评论中提供了答案。我终于破译了斯托夫的意思:D 我想 下面的代码适用于任何想知道的人: 主要内容: Set_Test.py:
class Settings:
def __init__(self):
self._settingsID = 1
@property
def settingsID(self):
return self._settingsID
@settingsID.setter
def settingsID(self, value):
self.settingsID = value
class Settings:
def __init__(self):
self._settingsID = 1
@property
def settingsID(self):
return self._settingsID
@settingsID.setter
def settingsID(self, value):
self._settingsID = value
Test_Code.py
import Set_Test
sting = Set_Test.Settings()
class Testy():
def changeVal(self, sting):
print(sting.settingsID)
sting.settingsID = 8
print(sting.settingsID)
是的,但问题到底是什么?您看到了什么行为,您期望得到什么?我希望Test_代码中的changeVal方法更改Set_测试中settingsID的值。因此,在第二次打印时,它应该打印新值。@Ripfury这应该是
self.\u settingsID=value
,请注意下划线,因为它只打印1,而不是8@Ripfury而这个Set\u Test.Settings.settingsID=8
会导致类变量
不按预期更改实例变量的值。
import Set_Test
import Test_Code
sting = Set_Test.Settings()
tc = Test_Code.Testy()
ID = sting._settingsID
print(f'Settings ID is: {ID}')
tc.changeVal(sting)
ID = sting._settingsID
print(f'Settings ID is: {ID}')
class Settings:
def __init__(self):
self._settingsID = 1
@property
def settingsID(self):
return self._settingsID
@settingsID.setter
def settingsID(self, value):
self._settingsID = value
import Set_Test
sting = Set_Test.Settings()
class Testy():
def changeVal(self, sting):
print(sting.settingsID)
sting.settingsID = 8
print(sting.settingsID)