Python面向对象—类属性和实例属性
Posted 傲娇的草履虫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python面向对象—类属性和实例属性相关的知识,希望对你有一定的参考价值。
属性:就是属于一个对象的数据或函数元素
类有类方法、实例方法、静态方法、类数据属性(类变量)和实例数据属性(实例变量)。
类属性:包括类方法和类变量,可以通过类或实例来访问,只能通过类来修改。
实例属性:包括实例方法和实例变量
class MyClass(object): name = \'Anl\' def __init__(self, age): self.age = age @classmethod def class_method(cls): print \'class_name:\', cls.name #类方法访问类变量 print "I\'m class method" def example_method(self): self.age = 20 print \'example_name:\', self.__class__.name # 实例方法访问类变量 print "I\'m a method, and age is %d" % self.age @staticmethod def static_method(): print "I\'m static method"
使用类来访问类变量
MyClass.name
#结果为 \'Anl\'
使用类来修改类变量
MyClass.name = \'Delav\' print MyClass.name
#结果为\'Delav\'
使用类来访问类方法
MyClass.class_method()
#结果为
class_name: Delav
I\'m class method
使用类来访问静态方法
MyClass.static_method()
#结果为
I\'m static method
修改实例变量
ob = MyClass(20) #实例化 print ob.age #结果为20 ob.age = 23 #修改实例属性 print ob.age #结果为23
使用实例来访问类变量
print ob.name #结果为 \'Delav\'
使用实例来访问实例方法
ob.example_method(25)
#结果为
example_name: Delav
I\'m example method , and age is 25
使用实例来访问类方法
ob.class_method()
#结果为
class_name: Delav
I\'m class method
使用实例来访问静态方法
ob.static_method() #结果为 I\'m static method
修改实例属性,类变量不变,实例变量改变
ob.name = \'Bon\' print MyClass.name #结果为 Delav print ob.name #结果为 Bon
总的结果
a = MyClass(20)
以上是关于Python面向对象—类属性和实例属性的主要内容,如果未能解决你的问题,请参考以下文章