美文网首页
Python 面向对象编程

Python 面向对象编程

作者: 竞技等级几点叫你你呢 | 来源:发表于2017-09-05 23:54 被阅读0次

    class

    python 是动态语言,对于每一个实例,都可以直接给他们的属性赋值。

    class Person():
        pass
    
    
    xiaohong = Person()
    xiaohong.name = 'xiaoming'
    xiaohong.age = 20
    
    xiaoming = Person()
    xiaoming.size = 50
    
    print(xiaoming.size)
    print(xiaohong)
    

    初始化实例属性

    在定义类时,可以为Person类添加一个特殊的_init_()方法,当创建实例时,_init_()方法被自动调用,每个实例都统一拥有属性。
    
    class Person():
        def __init__(self,name,age):
            self.name = name
            self.age = age
    
    
    xiaohong = Person('xiaoming',20)
    
    print(xiaohong.name)
    

    访问限制

    __ 双下划线开头的属性不能被外部访问
    
    class Person():
        def __init__(self,name,age):
            self.name = name
            self.age = age
            self.__class = 1
    
    
    __class 属性不能直接被外部访问
    以'__xx__' 形式存在的属性,可以被外部访问,在python中为特殊属性。
    

    类属性

    class Person(object):
        address = 'Earth'
        def __init__(self, name):
            self.name = name
    
    可以直接根据类访问,不需要实例化
    Person.address
    当然实例化的对象也可以访问
    

    实例属性和类属性

    优先级  :   类属性 > 实例属性
    

    实例方法

    和java 类中定义方法类似
    

    @classmethod 类方法

    在class中定义的全是实例方法,通过标记一个 @classmethod,该方法将绑定到类上,而非类的实例。类方法的第一个参数将传入类本身,通常将参数名命名为 cls
    

    继承

    super(Student, self)将返回当前类继承的父类,
    
    class Person(object):
        def __init__(self, name):
            self.name = name
    
    
    class Student(Person):
        def __init__(self, name, score):
            super(Student, self).__init__(name)
            self.score = score
    
    
    xiaobai = Student(1, 1)
    
    
    print(isinstance(xiaobai,Person))
    print(isinstance(xiaobai,Student))
    

    多态

    多重继承

    class A(object):
        def __init__(self, a):
            print 'init A...'
            self.a = a
    
    class B(A):
        def __init__(self, a):
            super(B, self).__init__(a)
            print 'init B...'
    
    class C(A):
        def __init__(self, a):
            super(C, self).__init__(a)
            print 'init C...'
    
    #多重继承
    class D(B, C):
        def __init__(self, a):
            super(D, self).__init__(a)
            print 'init D...'
    

    相关文章

      网友评论

          本文标题:Python 面向对象编程

          本文链接:https://www.haomeiwen.com/subject/wqxmjxtx.html