zoukankan      html  css  js  c++  java
  • Python 高级编程系列__01:一切皆对象

    Python的面向对象更加彻底。

    函数和类也是对象,属于 python 的一等公民。

    类可以理解为模板,也是一个对象,可以动态修改他的属性。

    1、赋值给一个变量
    函数对象赋值给一个变量:

    def ask(name="baby",age=3):
        print(name, age)
    
    my_func = ask
    my_func("Bob",18)
    
    输出结果:
    Bob 18
    

    类对象赋值给一个变量:

    #类对象赋值给一个变量
    class Person:
        def __init__(self):
            print("Person class")
    
    
    my_class = Person
    my_class()
    
    输出:
    Person class
    

    2、可以添加到集合对象中

    def ask(name="baby",age=3):
        print(name, age)
    
    class Person:
        def __init__(self):
            print("Person class")
    
    obj_list = []
    obj_list.append(ask)
    obj_list.append(Person)
    
    for item in obj_list:
        print(item)
    
    输出:
    <function ask at 0x106e320d0>
    <class '__main__.Person'>
    
    

    3、可以作为参数传递给函数

    def ask(name="baby",age=3):
        print(name, age)
    
    class Person:
        def __init__(self):
            print("Person class")
    
    obj_list = []
    obj_list.append(ask)
    obj_list.append(Person)
    
    for item in obj_list:
        print(item())
    
    输出:
    baby 3
    None
    Person class
    <__main__.Person object at 0x109f0d978>
    
    解释:
    baby 3 : ask 函数实例化后打印出来的结果
    None:ask 函数没有返回值
    Person class:Person 类的 print 打印的结果
    <__main__.Person object at 0x109f0d978>:对象的返回值是一个 Person object
    

    注意和上面例子的区别在于:
    for循环的print函数,对 item 做了实例化:item()

    4、可以当做函数的返回值
    函数可以返回一个函数,这是 python 装饰器的实现原理

    def ask(name="baby",age=3):
        print(name, age)
    
    def decorator_func():
        print("desc start")
        return ask
    
    my_ask= decorator_func()
    my_ask("Tom",21)
    
    输出:
    desc start
    Tom 21
    
  • 相关阅读:
    用.net开发wap
    MVC3 中使用 Ajax.ActionLink Ajax.BeginForm
    收藏一下这个微软MVP的老外博客
    第三篇:Django的路由系统
    第二篇:Django自定义登录功能
    第一篇:Django简介
    json和pickle序列化模块
    oracle 11gr2 rac修改VIP
    修改监听端口号
    删除磁盘组
  • 原文地址:https://www.cnblogs.com/bigband/p/13642988.html
Copyright © 2011-2022 走看看