python - 如何在另一个 python 文件中的方法中使用变量的值?
问题描述
我在类name
内部的方法中有变量。control_in(self)
Test
我试图name
通过执行以下操作来创建属性:
a) setattr(control_in, name
"Harry Banes") b) control_in.name = "Harry Banes"
在文件 b.py 中,我尝试在代码的每个部分中使用:a) from a import *
b) import a
c) from a import Test
aa) print(a.Test.control_in.name)
ab) print(t1.control_in.name)
ac) print(a.t1.control_in.name)
ad) global name
(我知道这是没用的,但只想提一下我试过了。)
我也尝试过return name
在return control_in.name
control_in(self) 方法结束时
并且 none 打印 name 变量的值。但是我在init方法中放入的所有内容都会打印出来。以print(t1.n)
打印为例:numbers
.
是的,我已经搜索并尝试了很多其他 StackOverflow Q&A 的解决方案,但都没有奏效,这就是我亲自询问的原因。
一个.py
import b
class Test:
def __init__(self):
self.n = "numbers"
def control_in(self):
control_in.name = "Harry Banes"
if __name__ == '__main__':
pass
b.py
from a import *
if __name__ == '__main__':
t1 = Test()
print(t1.n) # Successfuly prints "numbers"
print(t1.control_in.name) # Throws attribute error
我希望输出“Harry Banes”,但我得到了这个错误:AttributeError: 'function' object has no attribute 'name'
我想在另一个文件中使用除init以外的另一个类的方法中的值。我为什么要这个?因为这是一个问题,我有一个更大的代码,我只需要一个变量就可以在另一个函数中发生某些事情,从另一个 python 文件,但我不知道如何获取变量值。
解决方案
首先,control_in.name = "Harry Banes"
这不是一个有效的代码,因为类方法不能仅仅通过它的名字来引用,而是通过它的类来引用:
def control_in(self):
Test.control_in.name = "Harry Banes"
或者更好的是,用于self.__class__
引用类:
def control_in(self):
self.__class__.control_in.name = "Harry Banes"
其次,Test.control_in.name
在方法被调用和执行之前不会被定义control_in
,所以你必须专门调用它:
t1 = Test()
t1.control_in()
print(t1.control_in.name)
这输出:
Harry Banes
但最后,通常没有任何充分的理由向函数对象添加属性。在这种情况下,Test.control_in.name
变量绑定到一个类方法,因此在所有实例之间共享,并且应该更惯用地重新定义为类变量:
class Test:
name = "Harry Banes"
这样您就可以name
访问Test.name
:
print(Test.name)
推荐阅读
- networking - Kubernetes 如何在具有多个接口和 IP 的主机上为 fieldPath: status.hostIP 分配 IP
- php - 访问 foreach 数组中的特定键
- javascript - 如何在按钮单击时使用 useEffect 行为
- java - 类中未知类型的数组实例化
- arrays - malloc/realloc 只适用于无用的 printf
- php - 声明与接口不兼容(PHP)
- c# - ImageCropper.Forms 在初始化时失败
- c# - PlatformNotSupportedException:此平台不支持安全二进制序列化
- swift - SwiftUI 生命周期不支持 CoreData
- android - 在 HMS 设备上使用 Geocoder 对纬度/经度坐标进行反向地理编码