### `__str__`魔術(shù)方法:
1. 在打印某個(gè)對(duì)象的時(shí)候琅绅,會(huì)調(diào)用這個(gè)對(duì)象的`__str__`方法鹅巍,打印這個(gè)方法的返回值。
2. 如果在使用`str(obj)`這個(gè)函數(shù)的時(shí)候昆著,也會(huì)調(diào)用`__str__`方法县貌。
### `__repr__`魔術(shù)方法:
1. `__repr__`魔術(shù)方法是用來(lái)表述某個(gè)對(duì)象在內(nèi)存中的展示形式凑懂。
2. 如果在終端直接輸入一個(gè)對(duì)象,然后按回車,那么將會(huì)執(zhí)行這個(gè)對(duì)象的`__repr__`方法摆碉。
3. 如果你將幾個(gè)對(duì)象扔到一個(gè)容器中(比如:列表),那么你在打印這個(gè)容器的時(shí)候巷帝,會(huì)依次調(diào)用這個(gè)容器中的元素的`__repr__`方法忌卤。如果沒(méi)有實(shí)現(xiàn)這個(gè)`__repr__`方法楞泼,那么得到的將是一個(gè)`類名+地址`的形式,這種形式的是不好理解的堕阔。
### `__dict__`魔術(shù)屬性:
1. 用來(lái)獲取用戶自定義的屬性棍厂,以及這個(gè)屬性對(duì)應(yīng)的值超陆。返回的是一個(gè)字典。
2. 和`dir`函數(shù)做一個(gè)區(qū)分时呀。`dir`函數(shù)返回的是這個(gè)對(duì)象上擁有的所有屬性张漂,包括`Python`內(nèi)置的屬性和用戶自己添加的谨娜,并且只是獲取屬性名字,不會(huì)獲取這個(gè)屬性對(duì)應(yīng)的值趴梢。
#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)