魔术方法(一)——常规魔术方法:

### `__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)

你可能感兴趣的:(魔术方法(一)——常规魔术方法:)