无法在另一个 python 脚本中使用 python 函数的属性
unable to use attribute from a python function in another python script
我想将 python 脚本 (x) 中的函数返回的属性之一用于 python 脚本 (y)
两个脚本之间的通信运行良好;我可以获取函数和属性,但不允许我获取函数返回的属性。
我是这样工作的:
x.py
def func():
b = 10
a = 15
return [a,b]
c = 20
y.py
from x import func
import x
print (x.c)
print (func.b)
我得到 "c" 值和以下错误 AttributeError: 'function' object has no attribute 'b'
我也试过打印 x.b
,我有 AttributeError: module 'WorkingLSTM' has no attribute 'b'
提前致谢
这是不允许的,您必须调用函数从函数返回列表中获取值。
a, b = func()
print(b)
# or just...
print(func()[1])
PS:是"not allowed",因为它没有任何意义;当没有函数调用时,根本就没有变量 b。你可以看看 类,它们可以保存静态变量。
您不能访问函数的局部变量。
这些变量仅在执行 func 期间存在,然后被销毁。
你当然可以调用该函数并查看结果,但结果只是一个包含两个值的列表
rslt = func()
print("A = ", rslt[0])
print("B = ", rslt[1])
调用 func 的方法是使用 func()
,这会给你 [a,b].
示例:
funcResult = func()
a = funcResult[0]
b = funcResult[1]
funcResults 是 func() 的 return 值,即列表 [a ,b].
如果你想使用属性,你可以创建一个可调用的 class 而不是函数:
class Func:
def __init__(self):
self.b = 10
self.a = 15
def __call__():
return [self.a, self.b]
func = Func()
Python有作用域的概念。局部变量在函数外没有作用。
如果要使用它,请使用 class 和 self
或使 getter 函数(但它不是 Pythonic)。
x.py
class X:
def __init__(self):
self.b = 10
self.a = 15
self.c = 20
def func(self):
return [self.a, self.b]
y.py
from x import X
x = X()
print(x.c)
print(x.func()[1])
变量在函数内部声明,使其成为局部变量,因此无法在函数外部访问。
该变量在函数外部声明,使其成为全局变量,并且无论如何都与您的函数无关。
属性的概念与 类 相关,您正在处理函数,因此您可能必须将其视为 class 对象。
如果您担心访问局部变量,您不妨这样做:
y.py
from x import *
d = func() # func returns a list which is now
# identified/referenced by variable d
# displays the elements in the list using index position
print(d[0])
print(d[1])
我想将 python 脚本 (x) 中的函数返回的属性之一用于 python 脚本 (y)
两个脚本之间的通信运行良好;我可以获取函数和属性,但不允许我获取函数返回的属性。
我是这样工作的:
x.py
def func():
b = 10
a = 15
return [a,b]
c = 20
y.py
from x import func
import x
print (x.c)
print (func.b)
我得到 "c" 值和以下错误 AttributeError: 'function' object has no attribute 'b'
我也试过打印 x.b
,我有 AttributeError: module 'WorkingLSTM' has no attribute 'b'
提前致谢
这是不允许的,您必须调用函数从函数返回列表中获取值。
a, b = func()
print(b)
# or just...
print(func()[1])
PS:是"not allowed",因为它没有任何意义;当没有函数调用时,根本就没有变量 b。你可以看看 类,它们可以保存静态变量。
您不能访问函数的局部变量。 这些变量仅在执行 func 期间存在,然后被销毁。
你当然可以调用该函数并查看结果,但结果只是一个包含两个值的列表
rslt = func()
print("A = ", rslt[0])
print("B = ", rslt[1])
调用 func 的方法是使用 func()
,这会给你 [a,b].
示例:
funcResult = func()
a = funcResult[0]
b = funcResult[1]
funcResults 是 func() 的 return 值,即列表 [a ,b].
如果你想使用属性,你可以创建一个可调用的 class 而不是函数:
class Func:
def __init__(self):
self.b = 10
self.a = 15
def __call__():
return [self.a, self.b]
func = Func()
Python有作用域的概念。局部变量在函数外没有作用。
如果要使用它,请使用 class 和 self
或使 getter 函数(但它不是 Pythonic)。
x.py
class X:
def __init__(self):
self.b = 10
self.a = 15
self.c = 20
def func(self):
return [self.a, self.b]
y.py
from x import X
x = X()
print(x.c)
print(x.func()[1])
变量在函数内部声明,使其成为局部变量,因此无法在函数外部访问。
该变量在函数外部声明,使其成为全局变量,并且无论如何都与您的函数无关。
属性的概念与 类 相关,您正在处理函数,因此您可能必须将其视为 class 对象。
如果您担心访问局部变量,您不妨这样做:
y.py
from x import *
d = func() # func returns a list which is now
# identified/referenced by variable d
# displays the elements in the list using index position
print(d[0])
print(d[1])