python中的类和实例

  python中的类和c++中的类是一样的,不同之处就是c++的类,如果含有成员变量,并且成员变量发生变化后,会被类的对象(实例)或者是子类的对象继承到,但是python中如果类的实例之前已经对其自身的属性,即实例属性操作过,那之后不管类的属性是否发生变化,都与它无关,并且值不会继承过来。至于实例,是类通过一些方法构造出来的。下面贴上一个例子,例子是来自于:http://onlypython.group.iteye.com/group/wiki/1357-to-talk-about-the-types-of-properties-in-python-and-examples-of-the-types-of-attributes-the-difference

# coding: utf-8

class AAA():
    aaa = 10

# 情形1 
obj1 = AAA()
obj2 = AAA() 
print obj1.aaa, obj2.aaa, AAA.aaa 
    
# 情形2
obj1.aaa += 2
print obj1.aaa, obj2.aaa, AAA.aaa 

# 情形3
AAA.aaa += 3
print obj1.aaa, obj2.aaa, AAA.aaa
View Code

  情形一,很清楚,通过类生成的实例,去访问类的属性,由于没有发生变化,所以他们三者的值是一样的。

  情形二,obj1.aaa+=2,obj1的aaa是从它所在的类AAA中得来的,但是它只是从那边把值继承过来进行的+的操作,并没有影响到类AAA中的aaa属性,而obj2的aaa并没有发生变化,所以也不会变。

  情形三,AAA.aaa对其属性aaa执行了操作,就像上文中说到的“如果类的实例之前已经对其自身的属性,即实例属性操作过,那之后不管类的属性是否发生变化,都与它无关,并且值不会继承过来”。这里也就是这个意思。

  python中对象的属性,可以通过__dict__来查看。所以可以在上述代码中加入几行,print 实例/类.__dict__来查看实例及其类的属性列表,python中一切都被称为对象,所以当然不管是实例还是类我们都称为是对象,这个概念跟c++很不一样。

  如果对于类和实例的概念还不是特别清楚,请转到这里:http://ipseek.blog.51cto.com/1041109/802243 

转载于:https://www.cnblogs.com/RainingDays/p/3270787.html

猜你喜欢

转载自blog.csdn.net/weixin_34167043/article/details/94538760
今日推荐