zoukankan      html  css  js  c++  java
  • python_面向对象

    1. 类名的首字母大写(编码规范推荐)
    2. 类变量 VS 实例变量

                   类变量 存在类中,可以通过类名字直接调用

                   类变量是所有该实例对象公有的区域

                  通过类名调用的是类变量,类变量只能通过类名调用来修改

                  通过实例化对象访问时,若无该实例变量,则访问类变量

                  通过实例化对象修改时,若无该实例变量,则是在该实例对象中添加该属性,而不是修改类变量,实例中不能修改类变量

       3. 构造函数 and 析构函数

        def __init__(self)

        def __del__(self),实例对象销毁时自动做的一些工作

      4. 私有 ,前面加__(两个下划线)

          self.__age = 0  #私有属性,只能在类中被访问

        def __getName(self): #私有方法,只能在类中被访问
                     
    return self.name

      5. 继承

      class Man(Person):
      重写父类方法,
    class Person:
        def __init__(self,name):
            self.name = name
            self.__age = 0  #私有属性,只能在类中被访问
        def __getName(self): #私有方法,只能在类中被访问
            return self.name
        def sleep(self):
            print("{nam} sleep=====".format(nam = self.name))
    
    class Man(Person):
    
        def sleep(self):  #重写父类的函数
            Person.sleep(self)  #调用父类的方法,将子类变量传进去,多态的应用
            print("man is sleep") #重构父类方法
    
    man1 = Man("wang")
    man1.sleep()
    View Code
    重写父类的构造函数:
     __init__()传入的参数需要重写父类的构造函数的参数
    super(Man,self).__init__(name)(新式类写法)
     
    class Person:
        def __init__(self,name):
            self.name = name
            self.__age = 0  #私有属性,只能在类中被访问
        def __getName(self): #私有方法,只能在类中被访问
            return self.name
        def sleep(self):
            print("{nam} sleep=====".format(nam = self.name))
    
    class Man(Person):
        def __init__(self,name,age):  #需要重写调用父类的构造函数,否则会自己覆盖父类的构造函数,掉不到父类的构造函数
            #Person.__init__(name)#经典类写法
            super(Man,self).__init__(name)  #name 为Person 的参数
            self.age = age
        def sleep(self):  #重写父类的函数
            Person.sleep(self)  #调用父类的方法,将子类变量传进去,多态的应用
            print("man is sleep") #重构父类方法
    
    man1 = Man("wang",20)
    man1.sleep()
    View Code
    多继承,继承是有顺序的
       继承中若有多个构造函数时,找到第一个构造函数后就返回
        最先从自己本类中查找,然后再在继承中的类中查找
       Python2中经典类采用深度优先方式查找类的构造函数
       Python3查询时采用广度优先的顺序查找继承的类的构造函数
    class Person:
        def __init__(self,name):
            self.name = name
            self.__age = 0  #私有属性,只能在类中被访问
        def __getName(self): #私有方法,只能在类中被访问
            return self.name
        def sleep(self):
            print("{nam} sleep=====".format(nam = self.name))
    class Work(object):
        def work(self,Where):
            print("{name} work in {whear}".format(name = self.name,whear = Where))
    
    class Man(Person,Work):
        def __init__(self,name,age):  #需要重写调用父类的构造函数,否则会自己覆盖父类的构造函数,掉不到父类的构造函数
            #Person.__init__(name)#经典类写法
            super(Man,self).__init__(name)  #name 为Person 的参数
            self.age = age
        def sleep(self):  #重写父类的函数
            Person.sleep(self)  #调用父类的方法,将子类变量传进去,多态的应用
            print("man is sleep") #重构父类方法
    
    man1 = Man("wang",20)
    man1.sleep()
    man1.work("shanghai")
    View Code
    6.  多态, 一种接口,多种实现,
       可以将子类的指针传给父类,通过传入不同的子类实例,实现不同的功能
        将多态接口写在父类中,若不想实例化调用,可以写成静态方法
  • 相关阅读:
    移步
    使用mingw在windows下搭建c/c++IDE环境
    安全协议系列(一)WEP详解
    碎碎念、我的2013!
    运维常见问题总结
    排序,分页,出现数据重复或缺失
    Terracotta中锁与性能的问题
    【转】Linux系统的性能测试与性能分析
    Distributed Cache Guideline
    脚本大搜罗
  • 原文地址:https://www.cnblogs.com/gongfuxiaozhen/p/8849244.html
Copyright © 2011-2022 走看看