#python-3.x
#python-3.x
Вопрос:
допустим, у меня есть два таких пакета:
├── 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
объектами, эти значения получаются с помощью геттеров.
Это работает так, как я ожидал, но когда я пытаюсь передать список 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
почему это происходит?
Спасибо!
Ответ №1:
Вы пытаетесь напечатать сам объект, а не его значение.
print(element.getAttributeA)
#Changed to
print(element.getAttributeA())
Ответ №2:
в ClassC вы печатаете сам метод, а не результат вызова метода,
измените classC.py
на это :
class classC:
def __init__(self):
self
def method(self,object):
for element in object:
print(element.getAttributeA()) ## added ()