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-类与对象 -> 正文阅读

[Python知识库]python-类与对象

一、类是具备相同特征和共同行为的事物的统称;具有抽象性。

二、作用

1、类作用:用来创建对象

2、实例作用:用来模拟现实生活的事物,类的某个实体/成员。

三、创建

1、创建类(变量表示特征,函数表示行为),类名命名规则是大驼峰格式

? ? class? 类名:

? ? ? ? 变量

? ? ? ? 函数

2、创建对象,即对象实例化

? ? 格式:类名()? ? 如:dog = Dog()

四、构造函数

1、作用:创建对象时会被调用类当中的__init__初始化函数,用来初始化对象数据

2、__init__函数没有返回值,只能返回None

3、格式(可无参、有参):

def __init__(self,参数列表):

? ?语句

4、当类中无定义init函数,系统会自动生成一个无参构造函数

五、self

1、在类中定义方法,一般会在方法中设置第一个参数self

self表示对象,self表示在对象的生产过程中,代表即将出生的对象的一个标记。self是在类定义里面使用的,类外面是没有self

class Car:
    wheel = '4轮'
    def __init__(self,color,logo):
        self.color = color
        self.logo = logo
bmw = Car(color='白色',logo='BMW')
print(f'{bmw.wheel},喷{bmw.color},印{bmw.logo}')

执行结果如下:

六、属性

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__ = ['属性'],若设置其他属性报错

class Animal:
    __slots__ = ['age']
    def info(self,name,age):
        self.name = '胖胖'
        self.age = 2
dog = Animal()
print(dog.name,dog.age)

执行结果如下:

八、方法

1、在类的作用域里面定义的函数就叫做方法,特殊的函数。__init__是构造函数,初始化函数。把带有self固定参数的方法叫做实例方法,属于实例的行为,有类方法、实例方法、静态方法

类方法

1、在类内定义,默认第一个参数接收一个类cls,用@classmethod声明

2、类和实例都可调用

实例方法

1、在类内定义,默认第一个参数接收一个实例self,不需要声明

2、只能由实例调用,类不能调用。 实例.方法名称()

3、当方法有参数时,遵循和普通函数一样的规则。该传参还是要传参,什么逻辑还是什么逻辑

4、在类里面,一个实例方法调用另一个方法用? self.实例方法名()??

5、各方法中,使用实例的属性,用self.属性获取

静态方法(一般不用)

1、在类内定义,不需要有默认传参,需要用@staticmethod声明

2、和类、实例没有任何直接的关联,不用self.属性、其他实例方法、cls.属性、类方法

3、调用静态参数? 类.静态函数() 或 实例.静态函数()

4、静态方法跟普通函数没啥区别,放在类外就是普通函数,直接? 函数名称()调用;放在类内就是静态方法,用 类.静态函数() 或 实例.静态函数() 调用

class Car:
    def s_start(self):
        return '实例方法'
    @classmethod
    def c_statr(cls):
        return '类方法'
    @staticmethod
    def j_start():
        return '静态方法'
bmw = Car()
print(bmw.s_start(),Car.c_statr(),bmw.j_start(),Car.j_start())

执行结果如下:

九、继承

1、一个新类从已有类里获得所有变量和函数(类内的可继承,类外的不可继承),自己有对应的属性和方法优先用自己的,若没有就调用上一层的,若上一层的没有就调用上上层的,一层一层网上找

2、格式:

class 子类名(父类名):

? ? 变量

? ? 方法(函数)

class Animal:
    name = '胖胖'
    age = 2
    def sleep(self):
        return '睡觉觉!'
class Cat(Animal):
    def showInfo(self):
        return f'{self.name},{self.age},{self.sleep()}'
cat = Cat()
print(cat.showInfo())

执行结果如下:

?3、继承方式

可直接继承、可自己重写、也可先将父类的拿过来,在自己搞一些自己的

直接继承,在子类中不用再定义可直接获取

方法重写

子类中的重写方法覆盖父类中相同声明(相同函数名)的方法

class Car:
    def start(self):
        return '可驱动!'
class Bmw(Car):
    def start(self):
        return '驱动的更快666!'
bmw = Bmw()
print(bmw.start())

执行结果:

?引用父类的再搞一些自己的? super()函数? super().父类方法()

class Car:
    def start(self):
        print('可驱动')
class Bmw(Car):
    def new_start(self):
        super().start()
        return '驱动更666'
bmw = Bmw()
print(bmw.new_start())

执行结果如下:

?4、多重继承

多重继承,多个类用逗号隔开即可

class Inphone(SmartPhone,MusicPlayer)

十、属性扩展

设置属性

1、可以直接? 类.属性 = value??

2、setattr()设置? setattr(类名,'属性名称','属性值'),必须放在类外

class Car:
    def s_start(self):
        return '可驱动'
setattr(Car, 'wheel', '4轮')
print(Car.wheel)

获取属性

1、可直接? 类.属性

2、getattr()获取? getattr(类名,str) 属性名称可作为str传进去? getattr(类名,‘属性名’),可自己输入属性,动态获取? getattr('类名',input('请输入:'))? ?必须放在类外

class Car:
    wheel = '4轮'
    color = '白色'
    def s_start(self):
        return '可驱动'
print(getattr(Car, 'color'))

执行结果如下:

?

  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-13 11:24:31  更:2021-10-13 11:26: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 18:37:56-

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