如何在使用type创建类时定义__str__函数?

时间:2018-01-12 19:47:44

标签: python metaclass

我正在努力实现以下案例:

function clickHome(){
   $('#home-content').addClass('active').show();
   $('#home-content').siblings().removeClass('active');
   $("ul#submenu li").removeClass("active");
};
function clickContact(){
    $('#contact-content').addClass('active').show();
    $('#contact-content').siblings().removeClass('active');
    $("ul#submenu li").removeClass("active");
}

使用类型:

    class ABCD(object):
        def __str__(self): 
            return "some string"

    a=ABCD()
    print a
    some string

但是得到以下错误:

    A=type("A",(object,),dict(__str__="some string",h=5))
    a=A()
    print a

1 个答案:

答案 0 :(得分:4)

你的意思是通过回调吗? A = type("A",(object,), dict(__str__=lambda self: "some string" , h=5)) a = A() 将作为实例方法实施,返回字符串。

print(a)
some string

print

当您在某个对象上调用__str__时,会调用其__str__方法。如果对象没有定义,则调用object类的__str__。因此,您不应该将字符串分配给TypeError,因为python会尝试将其“调用”为函数,抛出{{1}}。