Python 3.x 如何访问Python3.x中作为参数传递的对象的方法
假设我有两个这样的软件包:Python 3.x 如何访问Python3.x中作为参数传递的对象的方法,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
├── packages
│ ├── __init__.py
│ ├── packageA
│ │ ├── classA.py
│ │ ├── classB.py
│ │ └── __init__.py
│ ├── packageB
│ │ ├── classC.py
│ │ └── __init__.py
└── test
├── __init__.py
└── test.py
这是py文件的内容:
:classA.py
A类:
定义初始化(self,a,b):
自身属性a=a
自身属性b=b
def getAttributeA(自身):
返回自我
def getAttributeB(自身):
返回自我
:classB.py
来自packages.packageA导入类A
B类:
定义初始化(自):
自己
def getList(自我):
list=[classA.classA(10,11),classA.classA(20,21)]
返回列表
:classC.py
c类:
定义初始化(自):
自己
def方法(自身、对象):
对于对象中的元素:
打印(element.getAttributeA)
:test.py
来自packages.packageA导入类B
从packages.packageB导入类C
testClassB=classB.classB().getList()
对于testClassB中的元素:
打印(element.getAttributeA())
testClassC=classC.classC()
方法(testClassB)
- 在
中,创建两个实例,一个是test.py
,另一个是classB
classC
- 我试图打印列表中
对象项的值,这些值是使用getter获得的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>>
为什么会这样
谢谢大家! 在classC中,您打印的是方法本身,而不是方法调用的结果 将
classC.py
更改为:
class classC:
def __init__(self):
self
def method(self,object):
for element in object:
print(element.getAttributeA()) ## added ()
您正试图打印对象本身而不是其值
print(element.getAttributeA)
#Changed to
print(element.getAttributeA())
print(element.getAttributeA)
#Changed to
print(element.getAttributeA())