让我说我有两个这样的包裹:
├── packages
│ ├── __init__.py
│ ├── packageA
│ │ ├── classA.py
│ │ ├── classB.py
│ │ └── __init__.py
│ ├── packageB
│ │ ├── classC.py
│ │ └── __init__.py
└── test
├── __init__.py
└── test.py
这是py文件的内容:
classA.py
:class classA:
def __init__(self, a ,b):
self.__attributeA = a
self.__attributeB = b
def getAttributeA(self):
return self.__attributeA
def getAttributeB(self):
return self.__attributeB
classB.py
:from packages.packageA import classA
class classB:
def __init__(self):
self
def getList(self):
list = [classA.classA(10, 11), classA.classA(20, 21)]
return list
classC.py
:class classC:
def __init__(self):
self
def method(self,object):
for element in object:
print(element.getAttributeA)
test.py
:from packages.packageA import classB
from packages.packageB import classC
testClassB = classB.classB().getList()
for element in testClassB:
print(element.getAttributeA())
testClassC = classC.classC()
testClassC.method(testClassB)
test.py
中,创建两个实例classB
和一个classC
。classA
对象的Items的值,这些值是使用getter获取的。这与我预期的一样,但是当我尝试将列表传递给classC
并尝试执行相同操作时,我得到以下输出:
<bound method classA.getAttribteA of <packages.packageA.classA.classA object at 0x7fd038244a20>>
<bound method classA.getAttribteA of <packages.packageA.classA.classA object at 0x7fd0382448d0>>
当我应该得到这个的时候:
10
20
为什么会这样?
谢谢!
答案 0 :(得分:2)
您正在尝试打印对象本身而不是其值。
print(element.getAttributeA)
#Changed to
print(element.getAttributeA())
答案 1 :(得分:1)
在classC中,您正在打印方法本身,而不是方法调用的结果,
将classC.py
更改为此:
class classC:
def __init__(self):
self
def method(self,object):
for element in object:
print(element.getAttributeA()) ## added ()