是否可以更改类型函数行为?
Is it possible to change type function behavior?
我们可以通过在对象 class 中定义 __str__
来改变 str(object)
函数的行为。 type
函数可以这样做吗?我只是好奇,none 用例。
尝试 __class__
无效:
class A:
def __class__(self):
print(1)
return "x"
obj = A()
print(type(obj))
它不会打印 1
或对 x
做任何事情。它只是像往常一样打印 <class '__main__.A'>
。
您可以使用元类执行此操作:
class Meta(type):
def __repr__(cls):
return "Fire"
class A(metaclass=Meta):
pass
print(type(A()))
# Prints "Fire"
我们可以通过在对象 class 中定义 __str__
来改变 str(object)
函数的行为。 type
函数可以这样做吗?我只是好奇,none 用例。
尝试 __class__
无效:
class A:
def __class__(self):
print(1)
return "x"
obj = A()
print(type(obj))
它不会打印 1
或对 x
做任何事情。它只是像往常一样打印 <class '__main__.A'>
。
您可以使用元类执行此操作:
class Meta(type):
def __repr__(cls):
return "Fire"
class A(metaclass=Meta):
pass
print(type(A()))
# Prints "Fire"