这篇文章主要介绍“python的类和实例的属性有哪些”,在日常操作中,相信很多人在python的类和实例的属性有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python的类和实例的属性有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
创建类时会创建它的命名空间,用来存储类中定义的所有名字,这些名字称为属性。属性有两种:一是数据,二是代码块(又称函数或方法)。
创建实例时会创建它的命名空间,用来存放单向类指针和实例的属性。实例可通过类指针访问类的属性,而类不能访问实例的属性。另外python支持多继承,即类指针可以有多个。
访问实例.属性时,若在它的命名空间找不到,解释器会通过类指针去类(父类、祖父类等)的命名空间里查找,若都没有找到则报错。
修改实例的属性时,若在它的命名空间中有此属性,则修改之。若实例无此属性而类(父类、祖父类等)中有,则会在实例的命名空间中创建该属性,并不会修改类(父类、祖父类)的属性。
class Animal:kind = '动物'def __init__(self, name):self.name = namedef eat(self):print(f'{self.name}正在进食!')white_cat = Animal('白猫')white_cat.kind = '猫'print(white_cat.kind)print(Animal.kind)out:猫 动物
从上述案例中可以看到,修改实例white_cat的kind属性,Animal的kind属性不会变化。
self实质是实例在内存中的地址,在创建实例时会自动将它作为第一参数传给类的__init__函数。
当然你也可以给它取别的名字,但改名会造成他人阅读代码很困惑,所以不建议改名!
查看类和实例的属性有两种方法:
dir(类名):列出属性名列表。注意其中有很多是object类中定义的属性。
类名.__dict__:列出属性字典,key为属性名,value为属性值。
类和实例常用的特殊属性
类名.__name__ 类的名字
类名.__doc__ 类的说明文档
类名.__base__ 类的第一父类
类名.__bases__ 类所有父类构成的元组
类名.__dict__ 类的属性字典
类名.__module__ 类定义所在的模块
实例.__class__ 实例对应的类
这里举一个特殊例子,通过实例的特殊属性__class__来实例化另外一个实例:
class Animal:'''动物类'''kind = '动物'def __init__(self, name):self.name = namedef eat(self):print(f'{self.name}正在进食!')white_cat = Animal('白猫')white_cat.kind = '猫'black_dog = white_cat.__class__('黑狗')black_dog.kind = '狗'print(black_dog.kind)black_dog.eat()out:狗 黑狗正在进食!
到此,关于“python的类和实例的属性有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。