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

  • 相关阅读:
    Linux 共享库
    使用Visual Studio(VS)开发Qt程序代码提示功能的实现(转)
    ZOJ 3469 Food Delivery(区间DP)
    POJ 2955 Brackets (区间DP)
    HDU 3555 Bomb(数位DP)
    HDU 2089 不要62(数位DP)
    UESTC 1307 windy数(数位DP)
    HDU 4352 XHXJ's LIS(数位DP)
    POJ 3252 Round Numbers(数位DP)
    HDU 2476 String painter (区间DP)
  • 原文地址:https://www.cnblogs.com/finsomway/p/10050059.html
Copyright © 2011-2022 走看看