码迷,mamicode.com
首页 > 编程语言 > 详细

Python学习之旅(二十)

时间:2018-12-01 18:39:55      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:基础   __str__   type   ret   python   sel   高级   集合   属性   

Python基础知识(19):面向对象高级编程(Ⅱ)

定制类

形如“__xx__”的变量或函数在Python中是有特殊用途的

1、__str__

让打印出来的结果更好看

__str__:面向用户;__repr__:面向程序员

2、__iter__

使一个类能够实现for循环的功能

3、__getitem__

使类能够按照下标取元素

4、__getattr__

动态返回一个属性,当想找的属性不存在时不会报错

注:只能用在属性不存在的情况下

5、__call__

(1)直接对实例进行调用

(2)定义参数

callable:判断一个变量是否是可调用对象

>>> s=Student()
>>> callable(Student)
True
>>> callable(s)
False
>>> callable(abs)
True
>>> callable("more")
False

使用枚举类

创建枚举首先要导入Enum类

使用@unique装饰器保证没有重复值

使用元类

type

(1)可以查看一个类型或变量的类型

(2)以返回一个对象的类型,又可以创建出新的类型

创建一个class对象,type()函数依次传入3个参数:class的名称;继承的父类集合;class的方法名称与函数绑定

>>> class Run(object):
    pass

>>> class Fly(object):
    pass

>>> class Swim(object):
    pass

>>> def test(self):
    print("Wow,so pretty.")

>>> Duck=type("Duck",(Run,Fly,Swim),dict(hello=test))
>>> duck=Duck()
>>> duck.hello()
Wow,so pretty.

metaclass

metaclass允许创建类或者修改类

要编写一个ORM框架,所有的类都只能动态定义,这时候就需要用到metaclass

 

Python学习之旅(二十)

标签:基础   __str__   type   ret   python   sel   高级   集合   属性   

原文地址:https://www.cnblogs.com/finsomway/p/10050059.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!