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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 要点: 函数式编程:注意不是“函数编程”,多了一个“式” 模块:如何使用模块 面向对象编程:面向对象的概念、属性、...
    victorsungo阅读 1,631评论 0 6
  • Python进阶框架 希望大家喜欢,点赞哦首先感谢廖雪峰老师对于该课程的讲解 一、函数式编程 1.1 函数式编程简...
    Gaolex阅读 5,590评论 6 53
  • 来生,莫生帝王家 虞美人 作者:李煜 春花秋月何时了,往事知多少! 小楼昨夜又东风,故国不堪回首月明中! 雕栏玉...
    孙润阅读 830评论 1 1
  • 中国有着5000年光辉灿烂的历史文明,古墓众多,其中出土的文物大体包括金银器、青铜器、铁器、玉器、陶器、木器和兽骨...
    西村二狗子阅读 771评论 0 2
  • “我想我儿子了,我被警察带走时他还在睡觉。”他的手在铐子里来回转。 “案发当天下午六点,你在哪?”我的笔开始记录。...
    锄风少年阅读 322评论 0 1