__class__属性与元类
2024-10-10 20:01:28
class M(type):
def __str__(self):
return "gege"
aa = "ccf"
cc = "ccc" class TM:
cc = "ddd"
__metaclass__ = M
print (TM.__class__)#<class '__main__.M'>
a = TM()
print (TM.__metaclass__.cc)#ccc
print (TM.aa)#ccf
print (TM.cc)#ddd
#print (a.aa) #error
class属性类似于以上例子中的__metaclass__
实例.__class__等价于实例的所属类
回过头来补充说明。
继承type类的类就是元类,而我们新创建一个类,__metaclass__可以指定这个类是哪个元类的对象,如果不指定,则默认是type类的对象
更新:
类与类的类,跟实例与类,这两个对应还是有点区别的。
就比如上面那个例子,类TM的类M具备aa属性,我们用dir(TM)是看不到aa属性的,用hasattr(TM,"aa"),返回的也是false,但这不妨碍TM可以调用aa属性,只不过,TM的实例不能调用aa属性。
而一般的实例与类,只要类中具备的属性,用dir(实例)查看都能看到
最新文章
- 高级SQL运用
- git配置
- linux下安装编译php的curl扩展
- java_easyui体系之DataGrid(1)[转]
- iOS 实现简单的Http 服务
- 011OK6410开发板介绍
- spring getbean 方法分析
- 修改UISearchBar placeholder textColor
- UESTC_最少花费 2015 UESTC Training for Dynamic Programming<;Problem D>;
- Java他们其中一个IO(一)
- URL中包含url参数,(文件路径作为参数)
- Java项目下的classpath路径包括哪里
- 无法修改linux/ubuntu密码(Authentication token manipulation error )问题解决过程【转】
- .NET Core 2.0应用程序大小减少50%
- hsdfz -- 6.17 -- day2
- C/C++杂记:虚函数的实现的基本原理
- Scrapy框架——CrawlSpider类爬虫案例
- 跟我一起学习ASP.NET 4.5 MVC4.0(二)
- go-004-数据结构
- [SDOI2016]数字配对