Python 面向对象编程

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...'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 类编写细节 1.class 语句 class语句细节 python的class语句是属于OOP的一种工具(即定义变...
    疾风先生阅读 1,586评论 0 0
  • 定义类并创建实例 在Python中,类通过 class 关键字定义。以 Person 为例,定义一个Person类...
    绩重KF阅读 9,414评论 0 13
  • 面向对象编程 python中一切皆为对象,所谓对象:人是一个对象,电脑是一个对象 我们通过描述属性(特征)和行为来...
    b485c88ab697阅读 3,633评论 0 0
  • 类与实例 类与实例相互关联着:类是对象的定义,而实例是“真正的实物”,它存放了类中所定义的对象的具体信息。 下面的...
    邪恶的Sheldon阅读 2,675评论 0 0
  • 类相关知识 对象相关知识 类属性增删改查 实例属性增删改查 对象与实例属性 静态属性 类方法 静态方法 组合 继承...
    Techml阅读 3,101评论 0 0