zoukankan      html  css  js  c++  java
  • Python 类的内置方法

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    # 作者:Presley
    # 邮箱:1209989516@qq.com
    # 时间:2018-11-04
    # python内置方法
    
    class A:
        n = "A"
        def f2(self):
            print("from A")
    
    class B(A):
        n = "B"
        def f1(self):
            print("from B")
        # def f2(self):
        #     print("f2 from B")
    
    class C(A):
        n = "C"
        def f2(self):
            print("from C")
    
    class D(B,C):
        # def __new__(cls, *args, **kwargs):#初始化类中所有构造方法,如果这样重写了那么就只会执行重写的这个方法,需要再调用类中的其它方法就会报错
        #     print("--new--")
        def __init__(self):
            print("__init__")
            self.n = 4
        def __call__(self, *args, **kwargs):
            print("__call__")
            '''test doc'''
        # def __del__(self):#在程序运行完后会在内存中自动销毁
        #     print("deleteing the ....")
            pass
    
    #1、继承类的优先级
    # d = D()
    # d.f1()
    # d.f2()#按照先去找B,没有的话再去找C,C没有的话再去找A。按照广度优先的原则
    
    #在老版本中经典类按照深度优先,新式类按照广度优先,但是在3.0后无论经典类还是新式类全都按照广度优先,因此上图虽然是经典类但是还是广度优先
    
    #2、类中的内置方法
    # d = D()
    # print(d.__doc__) #打印出类中的字符串,可以用来注释
    # print(d.__module__)#打印模块所在的文件的名字
    
    #obj = D() #执行__init__
    #obj() #执行__call__
    #print(obj.__new__):#初始化类中所有构造方法,如果这样重写了那么就只会执行重写的这个方法,需要再调用类中的其它方法就会报错
    #print(obj.__dict__)#将类的成员变量以字典的形式打印出来,不会打印实例变量
    
    #metaclasses 比new都还要底层的类,如果重写类就用到,基本不会用到
    
    #3、类的构造  类是由type构造的
    # wohaoshuai = type("wohaoshuai",(),{"test":123})
    # print(type(wohaoshuai))  #<class 'type'>
    # a = wohaoshuai()
    # print(a.test)  #123
  • 相关阅读:
    Apache Spark源码走读之4 -- DStream实时流数据处理
    Apache Spark源码走读之3 -- Task运行期之函数调用关系分析
    Apache Spark源码走读之2 -- Job的提交与运行
    Apache Spark源码走读之1 -- Spark论文阅读笔记
    Spark
    (转)互联网广告综述之点击率特征工程
    Java排序算法之冒泡排序
    java枚举
    第二课、数据的艺术---------------------狄泰软件学院
    第一课、进阶高手的大门--------------------狄泰软件学院
  • 原文地址:https://www.cnblogs.com/Presley-lpc/p/9903300.html
Copyright © 2011-2022 走看看