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

    Python面向对象

    1、class定义

    #定义类
    class Emp:
      pass
    

    2、静态变量

    class Emp:
        #静态变量,通过类直接访问
        id = 100
        
        #__开头的是私有属性
        __age = 20
    
    #通过类直接访问
    print Emp.id
    

    3、构造函数和实例方法

    3.1 构造函数

    构造函数名称固定,就是__init__方法。

    class Emp: 
        #构造函数
        def __init__(self , name ,age):
            #实例变量
            self.name = name
            self.age = age
    

    3.2 成员函数

    通过对象调用的函数,函数首个参数需要使用self作为参数。

    class Foo:
      	#定义实例方法
    	def add(self , a, b):
          return a + b ;
    
    foo = Foo()
    #调用实例函数
    foo.add(1,2)
    

    3.3 类方法

    类方法不需要实例化对象,通过类名直接进行调用,相当于java中的静态方法。但方法的首参必须是cls类型,表示当前的类。

    class Foo:
        #cls表示当前的类
        @classmethod
        def add(cls , a , b):
            return a + b ;
    Foo.add(1,2)
    

    3.4 静态方法

    python中的静态方法类似于scala中的函数,即可以直接访问的函数,不需要通过类名访问。首个参数也无需定义成cls。

    class Foo:
        @staticmethod
        def add(a,b)
        	return a + b ; 
    
    #调用方法
    add(1,2)
    

    4、析构函数

    class Emp:
        #析构函数
        def __del__(self):
            print "销毁对象!"
    #创建对象
    e = Emp()x
    
    #销毁对象
    e = None
    
    
    #删除对象的成员
    del e.name
    
    #删除变量
    del e
    

    5、内置属性

    #内置属性判断
    print hasattr(e , "age")
    print hasattr(e , "name")
    print getattr(e , "age")
    setattr(e , "age" , 40)
    print getattr(e , "age")
    print getattr(e , "name" , "nobody")
    delattr(e, "age")
    print hasattr(e , "age")
    
    #访问类的属性
    #__dict__访问类的成员
    d = Emp.__dict__
    print  d
    
    #访问类名
    print Emp.__name__
    
    #所有父类构成的元组
    print Emp.__bases__
    

    6、多重继承

    class Horse:
        #__开头的方法时私有方法
        def __run(self):
            print "runing~~~"
    
        def eat(self):
            print "eating..."
    
        def __init__(self , name):
            self.name = name
    
    class Donkey:
        money = 100
        def __init__(self ,age):
            self.age = age
    
    #多重继承
    class Luozi(Horse , Donkey):
        def eat(self):
            print "WWWWWWWWWWW"
        def __init__(self):
            #显式调用父类构造函数
            Horse.__init__(self , "tom")
            Donkey.__init__(self ,12)
    
    l1 = Luozi()
    print l1.eat()
    

    6、异常

    # try-except-finally
    try:
        pass
    except ErrorA:
        pass
    except ErrorB:
        pass
    except:
        pass
    finally:
        pass
    
    # try-finally
    try:
        pass
    finally:
        pass
    
    # 异常方式
    try:
        thread.start_new_thread(sayhello, ("tom", 12))
    except Exception as e:
        print e
    
  • 相关阅读:
    JavaScript中变量的相互引用
    HTTP深入浅出 http请求
    AJAX 状态值(readyState)与状态码(status)详解
    关于 contentWindow, contentDocument
    使用CSS3改变文本选中的默认颜色
    IE去掉链接虚线框的几个方法
    各浏览器的鼠标位置测试
    我是如何对网站CSS进行架构的
    Javascript之继承(原型链方式)
    PhoneGap学习地址 / PhoneGap API介绍:Events
  • 原文地址:https://www.cnblogs.com/xupccc/p/9543932.html
Copyright © 2011-2022 走看看