### `__str__`魔术方法:
1. 在打印某个对象的时候,会调用这个对象的`__str__`方法,打印这个方法的返回值。
2. 如果在使用`str(obj)`这个函数的时候,也会调用`__str__`方法。
### `__repr__`魔术方法:
1. `__repr__`魔术方法是用来表述某个对象在内存中的展示形式。
2. 如果在终端直接输入一个对象,然后按回车,那么将会执行这个对象的`__repr__`方法。
3. 如果你将几个对象扔到一个容器中(比如:列表),那么你在打印这个容器的时候,会依次调用这个容器中的元素的`__repr__`方法。如果没有实现这个`__repr__`方法,那么得到的将是一个`类名+地址`的形式,这种形式的是不好理解的。
### `__dict__`魔术属性:
1. 用来获取用户自定义的属性,以及这个属性对应的值。返回的是一个字典。
2. 和`dir`函数做一个区分。`dir`函数返回的是这个对象上拥有的所有属性,包括`Python`内置的属性和用户自己添加的,并且只是获取属性名字,不会获取这个属性对应的值。
#encoding: utf-8
class Person(object):
def __init__(self,name,age):
self.name = name
self.age = age
self.country = 'china'
def __str__(self):
return "Person<%s>" % self.name
def __repr__(self):
return "Person(%s)" % self.name
p1 = Person('zhiliao',18)
print(dir(p1))
# print(p1.__dict__)
p2 = Person('ketang',10)
a = [p1,p2]
# print(a)
网友评论