| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> python-类与对象 -> 正文阅读 |
|
[Python知识库]python-类与对象 |
一、类是具备相同特征和共同行为的事物的统称;具有抽象性。 二、作用1、类作用:用来创建对象 2、实例作用:用来模拟现实生活的事物,类的某个实体/成员。 三、创建1、创建类(变量表示特征,函数表示行为),类名命名规则是大驼峰格式 ? ? class? 类名: ? ? ? ? 变量 ? ? ? ? 函数 2、创建对象,即对象实例化 ? ? 格式:类名()? ? 如:dog = Dog() 四、构造函数1、作用:创建对象时会被调用类当中的__init__初始化函数,用来初始化对象数据 2、__init__函数没有返回值,只能返回None 3、格式(可无参、有参): def __init__(self,参数列表): ? ?语句 4、当类中无定义init函数,系统会自动生成一个无参构造函数 五、self1、在类中定义方法,一般会在方法中设置第一个参数self self表示对象,self表示在对象的生产过程中,代表即将出生的对象的一个标记。self是在类定义里面使用的,类外面是没有self
执行结果如下: 六、属性1、类属性:在类定义作用域当中定义的变量; 2、实例属性:类当中某个成员具备的特征。 类属性: 1、定义(增):类名.类属性 = value、在类中直接定义,类属性 2、访问(查):类名.类属性、对象.类属性(对象先查自己的没有再查类里的) 3、修改(改):类名.类属性 = new_value 4、删除(删):del 类名.类属性? del只删除直系属性 5、类的所有属性:类.__dict__? 可查看该类的所有属性,只读,不可通过__dict__修改类属性 实例属性: 1、定义(增):直接通过对象动态添加? 实例.属性 = value、通过类的初始化方法__init__ 2、访问(查):类内访问 self.属性、类外访问? 实例.属性 3、修改(改):实例.属性 = new_value(后面加=是修改赋值,不加=则是访问查看) 4、删除(删):del 实例.属性? 5、实例的所有属性:实例.__dict__? ?可查看该实例的所有属性,可通过__dict__修改实例属性 6、不同实例之间不能互相访问对方的属性 获取属性 1、在类的外面可获取类属性,类属性是局部,不能在类外面直接获取,通过类.属性获取;在类的里面可直接获取类属性 3、类不能访问实例属性;实例可访问类属性,但不能修改、删除、增加 4、类修改某属性后,类/实例属性都会变;修改实例的属性,类属性不变,实例属性变 七、__slots__表示该类的对象只能添加age属性? __slots__ = ['属性'],若设置其他属性报错
执行结果如下: 八、方法1、在类的作用域里面定义的函数就叫做方法,特殊的函数。__init__是构造函数,初始化函数。把带有self固定参数的方法叫做实例方法,属于实例的行为,有类方法、实例方法、静态方法 类方法 1、在类内定义,默认第一个参数接收一个类cls,用@classmethod声明 2、类和实例都可调用 实例方法 1、在类内定义,默认第一个参数接收一个实例self,不需要声明 2、只能由实例调用,类不能调用。 实例.方法名称() 3、当方法有参数时,遵循和普通函数一样的规则。该传参还是要传参,什么逻辑还是什么逻辑 4、在类里面,一个实例方法调用另一个方法用? self.实例方法名()?? 5、各方法中,使用实例的属性,用self.属性获取 静态方法(一般不用) 1、在类内定义,不需要有默认传参,需要用@staticmethod声明 2、和类、实例没有任何直接的关联,不用self.属性、其他实例方法、cls.属性、类方法 3、调用静态参数? 类.静态函数() 或 实例.静态函数() 4、静态方法跟普通函数没啥区别,放在类外就是普通函数,直接? 函数名称()调用;放在类内就是静态方法,用 类.静态函数() 或 实例.静态函数() 调用
执行结果如下: 九、继承1、一个新类从已有类里获得所有变量和函数(类内的可继承,类外的不可继承),自己有对应的属性和方法优先用自己的,若没有就调用上一层的,若上一层的没有就调用上上层的,一层一层网上找 2、格式: class 子类名(父类名): ? ? 变量 ? ? 方法(函数)
执行结果如下: ?3、继承方式 可直接继承、可自己重写、也可先将父类的拿过来,在自己搞一些自己的 直接继承,在子类中不用再定义可直接获取 方法重写 子类中的重写方法覆盖父类中相同声明(相同函数名)的方法
执行结果: ?引用父类的再搞一些自己的? super()函数? super().父类方法()
执行结果如下: ?4、多重继承 多重继承,多个类用逗号隔开即可 class Inphone(SmartPhone,MusicPlayer) 十、属性扩展设置属性 1、可以直接? 类.属性 = value?? 2、setattr()设置? setattr(类名,'属性名称','属性值'),必须放在类外
获取属性 1、可直接? 类.属性 2、getattr()获取? getattr(类名,str) 属性名称可作为str传进去? getattr(类名,‘属性名’),可自己输入属性,动态获取? getattr('类名',input('请输入:'))? ?必须放在类外
执行结果如下: ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 18:37:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |