为什么 python obj.atribute return 地址位置和 obj.atribute.attribute return 值?
why does python obj.atribute return adress location and obj.atribute.atribute return the value?
要获取属性值,我需要调用 method.attribute.attribute 而不是 method.attribute,这是为什么?调用 method.attribute 会得到一个内存地址。 should/can 我如何更改我的代码以使 method.attribute 工作?
关于此的大多数问题都围绕着调用 print(f) 而不是 print(f())
class MyList:
"""stores a list and does other stuff eventualy"""
this_list = []
def __init__(self, *args):
for arg in args:
self.this_list.append(arg)
def print_list(self):
"""prints the atribute:"description" from the stored objects in the list"""
for x in range(len(self.this_list)):
print(MyClassObj(self.this_list[x]).description, sep="\n")
这是应该打印属性值的代码 描述
class MyClassObj:
"""test object to be stores in the "MyList" object."""
def __init__(self, description):
self.description = description
这是包含我要获取的属性的对象。
class CallList:
"""creates the objects, lists and calls the print method"""
@staticmethod
def main():
test1, test2 = MyClassObj("Test1"), MyClassObj("Test2")
list1 = MyList(test1, test2)
list1.print_list()
在上面 类.
之外调用了 Main()
我得到的输出是
<__main__.MyClassObj object at 0x007908F0>
<__main__.MyClassObj object at 0x00790910>
Process finished with exit code 0
如果我换行:
print(MyClassObj(self.this_list[x]).description.description, sep="\n")
我得到了预期的结果:
Test1
Test2
Process finished with exit code 0
所以问题是为什么以及如何更改我的代码?
in print_list
self.this_list[x]
已经是一个 MyClassObj
所以 MyClassObj(self.this_list[x])
创建一个新的 MyClassObj
有一个 MyClassObj
作为它的 description
.
因为没有定义将 MyClassObj
转换为 print
字符串的方法 Python 使用显示内存地址的默认转换。
要获取属性值,我需要调用 method.attribute.attribute 而不是 method.attribute,这是为什么?调用 method.attribute 会得到一个内存地址。 should/can 我如何更改我的代码以使 method.attribute 工作?
关于此的大多数问题都围绕着调用 print(f) 而不是 print(f())
class MyList:
"""stores a list and does other stuff eventualy"""
this_list = []
def __init__(self, *args):
for arg in args:
self.this_list.append(arg)
def print_list(self):
"""prints the atribute:"description" from the stored objects in the list"""
for x in range(len(self.this_list)):
print(MyClassObj(self.this_list[x]).description, sep="\n")
这是应该打印属性值的代码 描述
class MyClassObj:
"""test object to be stores in the "MyList" object."""
def __init__(self, description):
self.description = description
这是包含我要获取的属性的对象。
class CallList:
"""creates the objects, lists and calls the print method"""
@staticmethod
def main():
test1, test2 = MyClassObj("Test1"), MyClassObj("Test2")
list1 = MyList(test1, test2)
list1.print_list()
在上面 类.
之外调用了 Main()我得到的输出是
<__main__.MyClassObj object at 0x007908F0>
<__main__.MyClassObj object at 0x00790910>
Process finished with exit code 0
如果我换行:
print(MyClassObj(self.this_list[x]).description.description, sep="\n")
我得到了预期的结果:
Test1
Test2
Process finished with exit code 0
所以问题是为什么以及如何更改我的代码?
in print_list
self.this_list[x]
已经是一个 MyClassObj
所以 MyClassObj(self.this_list[x])
创建一个新的 MyClassObj
有一个 MyClassObj
作为它的 description
.
因为没有定义将 MyClassObj
转换为 print
字符串的方法 Python 使用显示内存地址的默认转换。