Python类和对象创建

时间:2015-04-04 00:57:18

标签: python

我在创建类对象时遇到问题。类的对象具有它的类的属性(即字段,方法)。我们还可以为类外的对象定义属性???

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]

请解释它是如何工作的。

2 个答案:

答案 0 :(得分:1)

(From article mentioned later)

通过一点点搜索找到一篇文章,我相信你会谈论你所谈论的内容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__?

的更多信息

希望这有帮助