python3中类的重点与难点:类属性和实例属性的区别说明

 更新时间:2021年06月02日 11:30:49   作者:辉辉咯  
这篇文章主要介绍了python3中类的重点与难点:类属性和实例属性的区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

先看图理解:

类属性就相当与全局变量,实例对象共有的属性,实例对象的属性为实例对象自己私有。

类属性就是类对象(Tool)所拥有的属性,它被所有类对象的实例对象(实例方法)所共有,在内存中只存在一个副本,这个和C++中类的静态成员变量有点类似。对于公有的类属性,在类外可以通过类对象和实例对象访问

类属性

class People(object):
    name = 'Tom'  #公有的类属性
    __age = 12     #私有的类属性
 
p = People() 
print(p.name)           #正确
print(People.name)      #正确
print(p.__age)            #错误,不能在类外通过实例对象访问私有的类属性
print(People.__age)        #错误,不能在类外通过类对象访问私有的类属性

实例属性(对象属性)

class People(object):
    address = '山东' #类属性
    def __init__(self):
        self.name = 'xiaowang' #实例属性
        self.age = 20 #实例属性
 
p = People()
p.age =12 #实例属性
print(p.address) #正确
print(p.name)    #正确
print(p.age)     #正确
 
print(People.address) #正确
print(People.name)    #错误
print(People.age)     #错误

通过实例(对象)去修改类属性

class People(object):
    country = 'china' #类属性
print(People.country)
p = People()
print(p.country)
p.country = 'japan' 
print(p.country)      #实例属性会屏蔽掉同名的类属性
print(People.country)
del p.country    #删除实例属性
print(p.country)

总结

如果需要在类外修改类属性,必须通过类对象去引用然后进行修改。如果通过实例对象去引用,会产生一个同名的实例属性,这种方式修改的是实例属性,不会影响到类属性,并且之后如果通过实例对象去引用该名称的属性,实例属性会强制屏蔽掉类属性,即引用的是实例属性,除非删除了该实例属性。

Python:类属性和实例属性总结

#类属性:类对象所拥有的的属性,它被所有类对象的实例对象共有,类对象和实例对象可以访问
#实例属性:实例对象所拥有的属性,只能通过实例对象访问
class Student:
    name='李明'  #类属性
    def __init__(self,age):
        self.age=age  #实例属性
        pass
    pass
Student.name='邓超'   #通过类对象去修改类属性  因为name属于类属性
print('-----------李明的数据------------------')
lm=Student(18)   #实例化对象,并传入参数
print(lm.age)    #通过实例对象去访问实例属性
print(lm.name) #通过实例对象去访问类属性
# lm.name='华晨宇'  #不能通过实例对象对类属性进行修改
print(lm.name)
print('--------------张三的数据--------------')
zs=Student(20)
print(zs.age)
print(zs.name)
print('------------通过类对象Student去访问name----------------')
print(Student.name)
# print(Student.age)   注:不能通过类对象去访问实例属性

运行结果

在这里插入图片描述

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 用Python编写web API的教程

    用Python编写web API的教程

    这篇文章主要介绍了用Python编写web API的教程,示例代码基于Python2.x版本,需要的朋友可以参考下
    2015-04-04
  • Python操作MySQL数据库的示例代码

    Python操作MySQL数据库的示例代码

    这篇文章主要介绍了Python操作MySQL数据库的方法,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • 浅谈python中的错误与异常

    浅谈python中的错误与异常

    写Python代码的小伙伴不可避免地会遇到代码执行错误和异常,这次就来详细的总结一下python中的错误和异常
    2021-06-06
  • python开发之字符串string操作方法实例详解

    python开发之字符串string操作方法实例详解

    这篇文章主要介绍了python开发之字符串string操作方法,以实例形式较为详细的分析了Python针对字符串的转义、连接、换行、输出等操作技巧,需要的朋友可以参考下
    2015-11-11
  • Python 画出来六维图

    Python 画出来六维图

    这篇文章主要介绍了Python 画出来六维图,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • python3整数反转的实现方法

    python3整数反转的实现方法

    这篇文章主要介绍了python3整数反转的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 利用Python实现普通视频变成动漫视频

    利用Python实现普通视频变成动漫视频

    这篇文章主要为大家详细介绍了如何利用Python语言实现普通视频变成动漫视频效果,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-08-08
  • Python Numpy学习之索引及切片的使用方法

    Python Numpy学习之索引及切片的使用方法

    数组中的元素可以通过索引以及切片的手段进行访问或者修改,和列表的切片操作一样。本文将详细为大家介绍一下Python中的科学计算库-Numpy的索引及切片的使用方法
    2022-01-01
  • Python对小数进行除法运算的正确方法示例

    Python对小数进行除法运算的正确方法示例

    这篇文章主要介绍了Python对小数进行除法运算的正确方法示例,正确的方法是需要转换成浮点数,否则永远不会得到正确结果,需要的朋友可以参考下
    2014-08-08
  • Keras 切换后端方式(Theano和TensorFlow)

    Keras 切换后端方式(Theano和TensorFlow)

    这篇文章主要介绍了Keras 切换后端方式(Theano和TensorFlow),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06

最新评论