Python学习记录-高级1

元类

类就是一组用来描述如何生成一个对象的代码段。但是Python中的类还远不止如此,它的类同样也是一种对象,当使用关键字class时,Python解释器在执行的时候就会创建一个对象。

class ObjectCreator(object):  #创建了一个名为ObjectCreator的对象
    pass                      #这个对象拥有创建对象(实例对象)的能力

print(ObjectCreator)                #可以打印一个类

def echo(o):
    print(o)

echo(ObjectCreator)                 #可以将类做为参数传给函数
ObjectCreator.new_attribute = 'foo' #可以为类增加属性
print(ObjectCreator.new_attribute)
ObjectCreatorMirror = ObjectCreator #可以将类赋值给一个变量
print(ObjectCreatorMirror)
#outputs:
#<class '__main__.ObjectCreator'>
#<class '__main__.ObjectCreator'>
#foo
#<class '__main__.ObjectCreator'>

可以将它赋值给一个变量;可以拷贝它;可以为它增加属性;可以将它作为函数参数进行传递
动态地创建类:类也是对象,可以在运行时动态的创建它们,就像其他任何对象一样

def choose_class(name):
    if name == 'foo':
        class Foo(object):
            pass
        return Foo     # 返回的是类,不是类的实例
    else:
        class Bar(object):
            pass
        return Bar

MyClass = choose_class('foo')
print(MyClass)      # 函数返回的是类,不是类的实例
print(MyClass())    # 可以通过这个类创建类实例,也就是对象

使用type创建类:type可以接受一个类的描述作为参数,然后返回一个类。

#type(类名, 由父类名称组成的元组,包含属性的字典)
class Test:
    pass

print(Test())  #创建了一个Test类的实例对象;
#output:<__main__.Test object at 0x0000022E319D9860>
Test2 = type("Test2",(),{
   })     #定了一个Test2类
print(Test2())                  #创建了一个Test2类的实例对象
MyDogClass = type('MyDog', (), {
   })
print(MyDogClass)               #output:<class '__main__.MyDog'>
Foo = type('Foo', (), {
   'bar':True}) #使用type创建带有属性的类Foo
print(Foo,',',Foo.bar)      #outputs:<class '__main__.Foo'> , True
FooChild = type('FooChild', (Foo,),{
   }) #类继承
print(FooChild,',',FooChild.bar)  #添加的属性是类属性,并不是实例属性

def echo_bar<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值