我在创建类对象时遇到问题。类的对象具有它的类的属性(即字段,方法)。我们还可以为类外的对象定义属性???
class myclass:
pass
object1 = myclass()
object2 = myclass()
object1.list = [10]
object1.list.append(4)
object2.fruit = 'apple'
print object2.fruit
print object1.list
输出:
apple
[10, 4]
请解释它是如何工作的。
答案 0 :(得分:1)
通过一点点搜索找到一篇文章,我相信你会谈论你所谈论的内容here.在快速阅读之后,听起来事实上这在python中是合法的。您正在创建类属性。它们只能从您分配的类中访问。例如print object2.list
无效。它基本上是一个实例变量,它不仅包含对象类型,还包含对象本身。
答案 1 :(得分:1)
我会试着试一试。如果不清楚,请提前抱歉。到目前为止我所阅读的内容有助于我理解类对象:https://docs.python.org/2/reference/datamodel.html
类对象只是一个分配了dict的命名空间。添加属性时,它们会被添加为dict的键。您可以通过执行
来检查
dir(object1)
dir(object2)
但是如上例所示添加属性会导致内存增加,可以通过声明__slots __
来停止此行为class A(object):
__slots__ = []
这将停止A的任何实例的属性创建。有关Usage of __slots__?
的更多信息希望这有帮助