Python学习之旅(二十)

Posted finsom

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习之旅(二十)相关的知识,希望对你有一定的参考价值。

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学习之旅(二十)的主要内容,如果未能解决你的问题,请参考以下文章

Python学习之旅(二十八)

Python学习之旅(三十八)

WCF学习之旅—实现支持REST客户端应用(二十四)

Kotlin学习之旅解决错误:kotlin.NotImplementedError: An operation is not implemented: Not yet implemented(代码片段

Swift学习Swift编程之旅---扩展(二十四)

WCF学习之旅—第三个示例(二十七)