美文网首页
007-类和对象

007-类和对象

作者: yukiko666 | 来源:发表于2019-06-18 17:29 被阅读0次

    Java - 强制面向对象 类

    Python - 既支持面向对象,也支持面向过程

    1、类、对象

    类是对某一类具有共同特点的事物的抽象,是在概念上的一个定义

    比如:人、学生、汽车。但是单独说这三个概念的时候,不代表任何一个具体的个体

    类的具体实例叫做 【对象】 【类的实例】 【实例化一个类】

    学生是类,张三是一个具体的学生就是 学生类的实例(Instance),也叫学生对象

    2、变量和方法

    特征、属性——变量

    行为、功能——方法(函数)

    举例:人、汽车

    *成员变量、成员方法:

    每个实例(对象、成员)间独立的,与其他成员不同的、不相关的

    变量:姓名、年龄、身高体重

    方法:吃饭、学习、唱歌

    *类变量、类方法:

    所有实例共用的、相同的,或只跟类有关而跟具体实例无关的

    变量:学校、学生总数、放学时间

    方法:上学、放学

    3、类的定义

    class 类名(父类):

    类实体

    *类名:每个单词的首字母大写

    **属性的定义:

    *成员变量

    构造函数(初始化函数) __init__(self)

    作用:python在创建类的实例的时候,会调用这个类的__init__()方法

    初始化数据

    self:创建的实例自身(存储当前对象的地址)

    所有的成员方法第一个参数默认是self,但是调用的时候不需要传值

    成员变量--属于实例的变量

    每次实例化就创建,实例结束就销毁

    *一般是在__init__方法中通过self完成 定义

    *类内部:通过*self访问*,类外部:通过实例访问

    *类的实例化

    类名(),括号内根据类的构造方法规定的参数传参(self除外)

    *类变量

    属于类的变量,

    *在类起始处统一定义

    *类内部:通过*类名*或*cls关键字*来访问;类外部:通过类名或实例来访问

    每次实例化新对象时,拷贝一个副本给对象

    通过实例的修改只对当前实例生效,通过类名的修改才能改变整个类所有对象的值

    *成员(实例)方法

    定义:必须带有参数self

    内部:可以访问成员变量、类变量(self或类名)、成员方法(self)、类方法(self或类名)

    通过self调用

    外部:通过类实例调用

    *类方法

    定义:必须带有@classmethod、和cls参数

    内部:可以访问类变量、类方法

    外部:通过类实例或类名调用

    *静态方法

    定义:必须带有@staticmethod

    内部:如果静态方法调用类方法或属性时,只能直接类名.属性名或类名.方法名

    外部:通过类实例或类名调用

    4、私有变量:__变量名

    python使用的是名字重整技术,改变了私有变量的值:_类名__变量名

    私有方法:

    __xx()

    专属变量

    __xx__

    特殊方法:

    __xx__() 代表一定的协议,相当于Java中的接口方法

    * __str__()与__repr__()

    __str__() --让class作用于print()函数

    (了解即可)__repr__() --返回程序开发者看到的字符串

    * __len__() --让class作用于len()函数

    __iter__() --让class具有可迭代的属性,返回值必须是对象自己

    next():每一次for循环都调用该方法

    __getitem__() --让class作用于索引方式

    __getattr__()

    当调用不存在的属性时,会试图调用此方法,来尝试获得属性

    5、封装

    变量私有化 + 提供getter和setter方法

    6、继承和多态

    多态

    1.当我们需要传入一个对象时,我们可以不传入具体的类型,而传入一个抽象的概念---父类对象

    2.这样,在程序实际运行时,可以动态绑定传入的类型

    3.因为都有共同的父类,所以一定有共同的方法。使用时,内部使用时,调用共有的方法就可以

    isinstance(instance, class)方法

    多重继承

    (class1, class2, class3) --class1优先

    相关文章

      网友评论

          本文标题:007-类和对象

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