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面向对象—类属性和实例属性的主要内容,如果未能解决你的问题,请参考以下文章

Python面向对象—类属性和实例属性

python 面向对象六 类属性和实例属性

python面向对象——类属性和实例属性

Python实用笔记 (22)面向对象编程——实例属性和类属性

python学习总结(面向对象进阶)

Python面向对象基础