5 python 内置类
2024-08-21 16:50:06
1、实例属性和类属性
给实例绑定属性的方法是通过实例变量,或者通过self
变量:
class Chinese:
def __init__(self,name,sex,age):
self.name = name
self.sex = sex
self.age = age s1 = Chinese('alex','man','')
s2 = Chinese('alex2','woman','')
s3 = Chinese('alex3','man','')
类属性:
class Chinese:
country = 'china'
def __init__(self,name,sex,age):
self.name = name
self.sex = sex
self.age = age
country = 'china'就是类Chinese的属性
class Chinese:
name = 'china'
country = 'china2'
def __init__(self,name,sex,age):
self.name = name
self.sex = sex
self.age = age s1 = Chinese('alex','man','')
s2 = Chinese('alex2','woman','')
s3 = Chinese('alex3','man','')
print(s1,s1.__dict__) print(s1.name)# 显示的是alex,不会显示类属性china
print(s1.country)
从上面的例子可以看出,在编写程序的时候,千万不要对实例属性和类属性使用相同的名字,因为相同名称的实例属性将屏蔽掉类属性,但是当你删除实例属性后,再使用相同的名称,访问到的将是类属性。
实例属性属于各个实例所有,互不干扰;
类属性属于类所有,所有实例共享一个属性;
不要对实例属性和类属性使用相同的名字,否则将产生难以发现的错误。
实例属性属于各个实例所有,互不干扰; 类属性属于类所有,所有实例共享一个属性; 不要对实例属性和类属性使用相同的名字,否则将产生难以发现的错误。
2、 __dict__ : 类的属性(包含一个字典,由类的数据属性组成)
1) 内置的数据类型没有__dict__属性 / int,list dict没有 2) 每个类有自己的__dict__属性,就算存着继承关系,父类的__dict__ 并不会影响子类的__dict__ 类的静态函数,类函数、普通函数,全局变量以及一些内置的属性都放在类_dict_里的 3) 对象也有自己的__dict__属性, 存储self.xxx 信息,父子类对象公用__dict__/ 一个字典,对象的数据属性组成
3、 __bases__ : 类的所有父类构成元素(由所有父类组成的元组), _bases_查看所有继承的父类,
class ParentClass1:
pass
class ParentClass2:
pass
class SubClass1(ParentClass1):#单继承,基类是ParentClass1,派生类是SubClass1
pass
class SubClass2(ParentClass1,ParentClass2):#python 支持多继承,用逗号分隔开多个继承类
pass
print(SubClass1.__bases__)
print(SubClass2.__bases__) 结果元组表示:
(<class '__main__.ParentClass1'>,)
(<class '__main__.ParentClass1'>, <class '__main__.ParentClass2'>)
__doc__ :类的文档字符串
__name__: 类名
__module__: 类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module__ 等于 mymod)
最新文章
- 【C】 02 - 程序结构和预处理
- 关于Interface忽然想到的
- Tomcat Clustering - A Step By Step Guide --转载
- android 开发 socket发送会有部分乱码,串码,伴随着数据接收不完整
- UVa 10954 (Huffman 优先队列) Add All
- Socket.io:有点意思
- PHP核心代码库中的APC缓存说明123
- php Composer中国全量镜像
- MCM1988 问题B_lingo_装货问题
- Android的Environment.getExternalStorageState的使用
- 在windows环境下安装redis和phpredis的扩展
- leetCode之旅(14)-Number of 1 Bits
- Symmetric Tree 对称树
- unity+xlua开发中的问题笔记
- luogu P2194 HXY烧情侣
- Java定义三个点Object...
- git pre-push hook
- 【前端基础系列】理解GET与POST请求区别
- mac 配置homebrew
- C/C++中字符串和数字互转小结
热门文章
- OracleDesigner学习笔记1――安装篇
- POJ3585 Accumulation Degree(二次扫描与换根法)
- C# 监听HTTP请求(遇到的一些问题)
- Microsoft Dynamics CRM4.0 JScript 过滤lookup 出现 Microsoft Dynamics CRM 窗口无法打开,可能已被弹出窗口阻止程序所阻止。
- Mac 下安装python3.7 + pip 利用 chrome + chromedriver + selenium 自动打开网页并自动点击访问指定页面
- BASIC-18_蓝桥杯_矩形面积交
- BASIC-10_蓝桥杯_十进制转十六进制
- bzoj 2571: Getting Rid of the Holidays
- golang web框架 beego 学习 (一) 环境搭建
- js 下关于json的销毁和添加