python类和对象-扩展
1、为类或对象动态创建属性或方法
2、__slots__ = ('name','age'),【实例】只能创建指定的属性属性或方法 ---新式类
3、执行父类的构造函数的不同
Father.__init__(self) --经典类
super(Son,self).__init__() --新式类
4、Person.__bases__ 只会显示一层继承的所有父类
5、__call__
__call__ 一个已经实例化的对象p,在调用p()
6、python中一切都是对象,类本身也是对象,类是由type产生的。
class Foo
pass
Bar = type('Bar',(object,),{'name':123,'Func':Hello})
以上等同于
class Bar:
name = 'yangmv'
def func(self):
print 'go func'
obj = Bar().func()
既然这样,那么对于定义的类来说,只要定义了一个类,就调用一次 type类的构造函数,如何验证?
7、__metaclass__ 可以指定类是由那个type来产生的
class MetaClass(type):
def __init__(self,name,bases,dicts):
print name class C1:
__metaclass__ = MetaClass class C2:
__metaclass__ = MetaClass

8、__init__ __new__ __call__
我们知道执行 f = Foo() 会默认执行构造函数 __init__
实际上执行了:type('Foo',bases,dicts).__call__('Foo')
class MetaClass(type):
def __init__(self,name,bases,dicts):
print name
def __call__(self, *args, **kwargs):
print self
result = self.__new__(self, *args, **kwargs)
print result
type(result).__init__(result,*args,**kwargs)
return result
class C1:
__metaclass__ = MetaClass
def __init__(self):
print 'c1.__init__'
self.name = 'yangmv'
def __new__(cls, *args, **kwargs):
print cls
print args
print kwargs
return object.__new__(cls, *args, **kwargs)
def Hello(self):
print 'hello'
class C2:
__metaclass__ = MetaClass
#c = C1()
c1 = object.__new__(C1)
c1.Hello()

python类和对象-扩展的更多相关文章
- python类与对象各个算数运算魔法方法总结
1.python类与对象各个算术运算魔法方法总结: 2.各个魔法方法应用举例: 3.实例训练: (1)我们都知道在 Python 中,两个字符串相加会自动拼接字符串,但遗憾的是两个字符串相减却抛出异常 ...
- python 类和对象的属性
python类和对象的属性分为类属性和对象属性两大类,类属性属于类,而对象属性属于对象. 1. 父类的对象属性会被子类的对象继承. 2. 父类的类属性会被子类继承,还是作为类属性,如果父类改变了类属性 ...
- 一文讲全了Python 类和对象内容
摘要:这是一个关于 Python 类和对象的全部内容. 本文分享自华为云社区<从零开始学python | Python 类和对象-面向对象编程>,原文作者:Yuchuan . Pytho ...
- python类、对象
python类.对象 学习完本篇,你将会深入掌握 什么是类,对象 了解类和对象之间的关系 能独立创建一个People(人类),属性有姓名.性别.年龄.提供一个有参的构造方法,编写一个show方法,输出 ...
- python 类和对象
类和对象 类 1.类的组成 数据和函数,二者是类的属性 2.两个作用: 实例化 属性引用 属性引用:类名.属性(增删改查) 实例化: 类名加括号就是实例化,会自动出发__init__的运行 ...
- python类与对象的组合与继承
1.把类的对象实例化放到一个新的类里面叫做类的组合,组合就是指几个横向关系的类放在一起,纵向关系的类放在一起是继承,根据实际应用场景确定.简单的说,组合用于“有一个”的场景中,继承用于“是一个”的场景 ...
- python 类和对象上
面向对象 Object Oriented 面向对象的学习: 面向对象的语法(简单,记忆就可以搞定) 面向对象的思想(稍难,需要一定的理解) 面向过程和面向对象的区别 面向过程开发,以函数作为基本结构使 ...
- python 类、对象、方法、属性
在python中,一个对象的特征也称为属性(attribute).它所具有的行为也称为方法(method) 结论:对象=属性+方法 在python中,把具有相同属性和方法的对象归为一个类(class) ...
- python类、对象、方法、属性之类与对象笔记
python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... 我们通过描述属性(特征)和行为来描述一个对象的.比如家里的小狗, ...
随机推荐
- RFC 8446
https://tools.ietf.org/html/rfc8446#section-2.3 简要内容.. [Docs] [txt|pdf] [draft-ietf-tls-...] [Tracke ...
- DAY5-Python学习笔记
1.电子邮件: 邮件历程: 发件人 -> MUA -> MTA -> MTA -> 若干个MTA -> MDA <- MUA <- 收件人编写MUA把邮件发到 ...
- (转载)MySQL数据库的几种常见高可用方案
转自: https://yq.aliyun.com/articles/74454 随着人们对数据一致性的要求不断的提高,越来越多的方法被尝试用来解决分布式数据一致性的问题,如MySQL自身的优化. ...
- 【bzoj2034】 2009国家集训队—最大收益
http://www.lydsy.com/JudgeOnline/problem.php?id=2034 (题目链接) 题意 n个任务,每个任务只需要一个时刻就可以完成,完成后获得${W_i}$的收益 ...
- php实践
http://blog.csdn.net/apanious/article/details/51075899
- 如何在低速率网络中测试 Web 应用
大家看到标题后的第一个问题可能是:“我们需要这样做吗?” 如果我们开发的是局域网 Web 应用的话,可能没有必要这样做.但如果我们的 Web 应用面向的是互联网上的成千上万的用户,这样做就很必要了.因 ...
- bzoj2961&&bzoj4140 共点圆
题目描述 在平面直角坐标系中,Wayne需要你完成n次操作,操作只有两种: 1.0 x y.表示在坐标系中加入一个以(x, y)为圆心且过原点的圆. 2.1 x y.表示询问点(x, y)是否在所有已 ...
- Gym 101933
Gym 101933 B. Baby Bites水题直接模拟即可 #include <cstdio> #include <cstring> #include <queue ...
- Eureka的原理
http://blog.csdn.net/awschina/article/details/17639191 关于AWS的区域和可用区概念解释: Eureka的原理:Region与Zone. 因为在编 ...
- Chapter1(预科)--C++Prime笔记
心得体会: 因为之前一直在用在学C,因此在看完C++Prime第一章后,就有中在一个培训班中,一个老师用一个简单的项目来带你了解这种语言的特性的感觉.当然这个告诉是在让你脑子固化接受一些点的前提下. ...