构造类的方法

构造类的方法

 

方法一:   class

1 class Foo():
2     pass

 

方法二:  type 构造类

def __init__(self,a):
    self.a = a

def func1(self,b):
    print(self.a,"<<<<func1")
    print(b,"<<<<func1")

Foo = type('Foo',(object,),{
                    '__init__': __init__,        # __init__ 固定名
                    'func1':func1,
                })

obj = Foo('liumeng')
print(obj)
print(obj.a,"<<<< obj.a")
obj.func1('lalala')

 

方法三: metaclass 构造类

 1 class Mytype(type):
 2     def __call__(self, *args, **kwargs):
 3         obj = self.__new__(self, *args, **kwargs)   #  创建一个空对象
 4         obj.__init__(*args, **kwargs)     # 对象的构造
 5         return obj                      # 返回对象
 6 class Foo(metaclass=Mytype):
 7     def __init__(self,a,b):
 8         self.a = a
 9         self.b = b
10     def __call__(self, *args, **kwargs):
11         print('lalala')
12 obj = Foo('alex','egon')      # 调用 call()方法  不会调用自己的 因为Foo类是通过Mytype类构造出来的,即Foo是Mytype类的对象,Foo()调用Mytype类的call方法
13 print(Foo)    # <class '__main__.Foo'>
14 print(obj)    # <__main__.Foo object at 0x000000000294CF98>
15 print(obj.a)
16 print(obj.b)
17 print(obj())

 

转载于:https://www.cnblogs.com/JAYWX/articles/8588238.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值