2015-04-04 139 views
1

我遇到了创建类对象的问题。类的一个对象具有它的类的属性(即字段,方法)。我们是否也可以为类之外的对象定义属性?Python类和对象创建

class myclass: 
    pass 

object1 = myclass() 
object2 = myclass() 

object1.list = [10] 
object1.list.append(4) 

object2.fruit = 'apple' 

print object2.fruit 
print object1.list 

OUTPUT:

apple 
[10, 4] 

请解释它是如何工作的。

+0

甚至不知道你可以做到这一点。我想我每天都会学到一些新的东西 – JGerulskis 2015-04-04 00:59:13

+0

,正如你可以在OUTPUT中看到的那样,那么你的问题到底是什么? – 2015-04-04 01:08:38

+0

list [10]没有在类中定义,那么在定义它之前如何使用它? – martinho 2015-04-04 04:08:40

回答

1

(From article mentioned later)

从一个小搜索找到的,我相信你谈论here.看完之后地址的文章很快听起来好像是其实是在蟒蛇的法律。您正在创建类属性。他们只能从您分配的课程中访问。例如print object2.list无效。它基本上是一个实例变量,不仅仅是对象类型而且是对象本身。

1

我会尽力给这个镜头。如果它不清楚,提前抱歉。到目前为止,我读过的这些内容帮助我理解了类对象:https://docs.python.org/2/reference/datamodel.html

类对象只不过是一个分配了字典的命名空间。当你添加属性时,他们会被添加为字典的关键字。您可以通过执行


dir(object1) 
dir(object2) 

但在添加属性类似上述导致内存增长的例子检查这一点,您可以通过声明__slots__

class A(object): 
    __slots__ = [] 

这将停止属性创造了A的任何实例停止这种行为。欲了解更多关于Usage of __slots__?

希望这可以帮助