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)

最新文章

  1. 【C】 02 - 程序结构和预处理
  2. 关于Interface忽然想到的
  3. Tomcat Clustering - A Step By Step Guide --转载
  4. android 开发 socket发送会有部分乱码,串码,伴随着数据接收不完整
  5. UVa 10954 (Huffman 优先队列) Add All
  6. Socket.io:有点意思
  7. PHP核心代码库中的APC缓存说明123
  8. php Composer中国全量镜像
  9. MCM1988 问题B_lingo_装货问题
  10. Android的Environment.getExternalStorageState的使用
  11. 在windows环境下安装redis和phpredis的扩展
  12. leetCode之旅(14)-Number of 1 Bits
  13. Symmetric Tree 对称树
  14. unity+xlua开发中的问题笔记
  15. luogu P2194 HXY烧情侣
  16. Java定义三个点Object...
  17. git pre-push hook
  18. 【前端基础系列】理解GET与POST请求区别
  19. mac 配置homebrew
  20. C/C++中字符串和数字互转小结

热门文章

  1. OracleDesigner学习笔记1――安装篇
  2. POJ3585 Accumulation Degree(二次扫描与换根法)
  3. C# 监听HTTP请求(遇到的一些问题)
  4. Microsoft Dynamics CRM4.0 JScript 过滤lookup 出现 Microsoft Dynamics CRM 窗口无法打开,可能已被弹出窗口阻止程序所阻止。
  5. Mac 下安装python3.7 + pip 利用 chrome + chromedriver + selenium 自动打开网页并自动点击访问指定页面
  6. BASIC-18_蓝桥杯_矩形面积交
  7. BASIC-10_蓝桥杯_十进制转十六进制
  8. bzoj 2571: Getting Rid of the Holidays
  9. golang web框架 beego 学习 (一) 环境搭建
  10. js 下关于json的销毁和添加