IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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面向对象01-相关基本语法 -> 正文阅读

[Python知识库]Python面向对象01-相关基本语法


#面向对象简介
面向对象(Object oriented Programming,OOP)
Python 中, 一切皆对象

class 类名:
	类体
  1. 类体中我们可以定义属性和方法。属性用来描述数据,方法(即函数)用来描述这些数据相关的操作。
  2. 类方法第一个参数必为:selfself 指的就是刚刚创建好的实例对象。

Python对象包括
3. id(identity 识别码)
4. type(对象类型)
5. value(对象的值)
(1) 属性(attribute)
(2) 方法(method)

new()方法

作用:用于创建对象,但我们一般无需重定义该方法。

init()方法(构造函数)

作用:初始化创建好的对象的相关属性,无返回值。

  1. 通过“类名(参数列表)”来调用构造函数。调用后,将创建好的对象引用返回给相应的变量。
  2. 不定义__init__方法,系统提供默认的__init__方法。定义带参的__init__方法,则系统不创建默认的__init__方法。

实例对象

实例属性

实例属性(实例变量)是从属于实例对象的属性。

  1. 实例属性一般在__init__()方法中定义:
    self.实例属性名 = 初始值
  2. 本类其他实例方法中,通过 self 访问:
    self.实例属性名
  3. 创建实例对象后,通过实例对象访问:
    obj01 = 类名() #创建对象,调用__init__()初始化属性 
    obj01.实例属性名 =#可以给已有属性赋值,也可以新加属性
    

实例方法

实例方法是从属于实例对象的方法。

def 方法名(self [, 形参列表]): 
	函数体

方法的调用格式如下:

对象.方法名([实参列表])

  1. 定义实例方法时,第一个参数必须为 self
  2. 调用实例方法时,不需要也不能给 self 传参。self 由解释器自动传参。
    实例方法调用本质
  3. dir(obj)可以获得对象的所有属性、方法
  4. obj.__dict__ 对象的属性字典
  5. pass 空语句(什么都不做)
  6. isinstance(对象,类型) 判断“对象”是不是“指定类型”

类对象

当解释器执行 class 语句时, 就会创建一个类对象。

类属性

类属性是**从属于“类对象”**的属性,可以 被所有实例对象共享。

class 类名: 
	类变量名= 初始值

类中或类外,通过:“类名.类变量名”来读写。

类方法(@classmethod修饰)

类方法是从属于“类对象”的方法。
类方法通过装饰器@classmethod 来定义,格式如下:

@classmethod 
def 类方法名(cls [,形参列表]) : 
	函数体

要点

  1. @classmethod 必须位于方法上面一行。
  2. 第一个参数币为cls,指“类对象”本身;
  3. 调用类方法格式:
    类名.类方法名(参数列表)
    且不需要也不能给 cls 传值。
  4. 类方法中访问实例属性和实例方法会导致错误
  5. 子类继承父类方法时,传入 cls 是子类对象,而非父类对象

静态方法(@staticmethod修饰)

“静态方法”和在模块中定义普通函数没有区别,只不过“静态方法”放到了“类的名字空间里面”,需要通过“类调用”

静态方法通过装饰器@staticmethod 来定义,格式如下:

@staticmethod 
def 静态方法名([形参列表]) : 
	函数体

要点:

  1. @staticmethod 必须位于方法上面一行
  2. 调用静态方法格式:
    类名.静态方法名(参数列表)
  3. 静态方法中访问实例属性和实例方法会导致错误
  4. 第一个参数无必须。

__del__方法(析构函数)

垃圾回收机制

  1. __del__方法称为“析构方法”,用于实现对象被销毁时所需的操作。
  2. Python 实现自动的垃圾回收,当对象没有被引用时(引用计数为 0),由垃圾回收器调用__del__方法。
  3. 可通过del 语句删除对象,从而保证调用__del__方法
  4. 系统会自动提供__del__方法,一般不需要自定义析构方法

__call__方法

可调用对象

__call__方法的对象,称为“可调用对象”,即该对象可以像函数一样被调用

Python方法没有重载!

在类体中定义了多个重名的方法只有最后一个方法有效!!
定义一个方法即可有多种调用方式, 相当于实现了其他语言中的方法的重载。

方法的动态性

Python 是动态语言,可以动态的为类添加新的方法,或者动态的修改类的已有的方法,动态添加时要有self

私有属性和私有方法

Python 对于类的成员没有严格的访问控制限制

  1. 通常我们约定,两个下划线开头的属性是私有的(private)。其他为公共的(public)。
  2. 类内部可以访问私有属性(方法)
  3. 类外部不能直接访问私有属性(方法)
  4. 类外部可以通过_类名__私有属性(方法)名存储时私有属性(方法)改名)访问私有属性(方法)

_xxx保护成员&__xxx__系统定义成员

_xxx保护成员,不能用“from module import * ”导入,只由类对象和子类对象能访问

@property 装饰器

@property 可以将一个方法的调用方式变成“属性调用”。

class Employee:
    def __init__(self,name,salary):
        self.name = name
        self.__salary = salary
    @property #相当于 salary 属性的 getter 方法
    def salary(self):
        print("月薪为{0},年薪为 {1}".format(self.__salary,(12*self.__salary)))
        return self.__salary;
    @salary.setter
    def salary(self,salary): #相当于 salary 属性的 setter 方法
        if(0<salary<1000000):
            self.__salary = salary
        else:
            print("薪水录入错误!只能在 0-1000000 之间")
emp1 = Employee("高淇",100)
print(emp1.salary)
emp1.salary = -200

##print内容
月薪为100,年薪为 1200
100
薪水录入错误!只能在 0-1000000 之间

注:

  1. @property 修饰的属性,如果没有加 setter方法,则为只读属性

类编码风格

  1. 类名首字母大写,多个单词之间采用驼峰原则。
  2. 实例名、模块名采用小写,多个单词之间采用下划线隔开。
  3. 每个类,应紧跟“文档字符串”,说明这个类的作用。
  4. 可以用空行组织代码,但不能滥用。在类中,使用一个空行隔开方法;模块中,使用两个空行隔开多个类
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-17 11:57:20  更:2021-10-17 11:58:00 
 
开发: 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 20:50:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码