一:类也是对象
类就是一组用来描述如何生成一个对象的代码。
类也是一个对象,只要你使用关键字class,python解释器在执行的时候就会创建一个对象。
下面这段代码:
classObjectCreator(object):pass
会在内存中创建一个对象,名字就是ObjectCreator,这个对象(类)自身拥有创建对象(类实例)的能力。
类的本质是一个对象,你可以拷贝它,可以将它赋给一个变量,将它作为参数传递给函数,可以为它增加属性。
以下为实例:
classObjectCreator(object):pass
print(ObjectCreator) #打印一个类
defecho(data):print(data)
echo(ObjectCreator)#将类作为参数传递给函数
ObjectCreator.newAttribute= ‘new attr‘ #为类添加新属性
print(hasattr(ObjectCreator,‘newAttribute‘))print(ObjectCreator.newAttribute)
ObjectCreatorCopy= ObjectCreator #将类复制给一个变量
print(ObjectCreatorCopy)print(ObjectCreatorCopy())‘‘‘输出:
True
new attr
<__main__.ObjectCreator object at 0x0000000001EA9860>‘‘‘
二:动态的创建类
1 通过return class 动态的构建需要的类
类也是对象,所以我们再运行的时候动态的创建它们。在函数体中创建类:
defcreate_class(name):if name == ‘foo‘:classFoo(object):pass
returnFooelse:classBerry(object):pass
returnBerry
my_class= create_class(‘foo‘)print(my_class)#返回类
print(my_class())#返回类的实例
‘‘‘输出:
.Foo‘>
<__main__.create_class.
2 通过type函数构造类
上述方法需要你自己编写整个类的代码。由于类也是对象,所以也必须是通过什么东西来生成才对。
内置函数type可以让知道一个对象的类型是什么,like:
classDemo(object):pass
print(type(100))print(type(‘str‘))print(type(Demo))print(type(Demo()))‘‘‘输出:
‘‘‘
另外,type还可以动态的创建类。type可以接收一个类的描述作为参数,然后返回一个类。
type的语法:
type(类名,父类的元组(针对继承的情况,可以为空), 包含属性的字典(名称和值))
比如下面的代码:
classMyclassDemo(object):pass
#可以手动通过type创建
MyclassDemo= type(‘MyclassDemo‘,(),{}) #返回一个类对象
print(MyclassDemo)print(MyclassDemo())‘‘‘输出:
<__main__.MyclassDemo object at 0x000000000213A3C8>‘‘‘
下面通过一个例子看看type是如何创建类的:
#1 构建Foo类
classFoo(object):
bar=True#使用type构建
Foo = type(‘Foo‘, (), {‘bar‘: True})print(Foo)#2继承Foo类
classFooChild(Foo):pass
#使用type构建
FooChild = type(‘Foochild‘,(Foo,), {})print(FooChild)print(FooChild.bar)#3为FooChild类增加方法
defecho_bar(self):print(self.bar)
FooChild= type(‘FooChild‘,(Foo,),{‘echo_bar‘: echo_bar})print(hasattr(Foo,‘echo_bar‘))print(hasattr(FooChild, ‘echo_bar‘))
my_foo=FooChild()
my_foo.echo_bar()‘‘‘输出:
True
False
True
True‘‘‘
可以看到,在python中
原文地址:http://www.cnblogs.com/1zhangwenjing/p/7750620.html