zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    图像不存在时,可用一张通用图片代替
    中英文并排
    ThinkPHP无限级分类
    跑数据示例一
    ThinkPHP项目笔记之RBAC(权限)补充篇
    ThinkPHP项目笔记之RBAC(权限)下篇
    ThinkPHP项目笔记之RBAC(权限)中篇
    ThinkPHP项目笔记之RBAC(权限)上篇
    ThinkPHP项目笔记之RBAC(权限)基础篇
    layDate/DatePicker日期时间空间
  • 原文地址:https://www.cnblogs.com/finsomway/p/10050059.html
Copyright © 2011-2022 走看看