python的面向对象

python的面向对象

定义类

class 关键字

python 复制代码
class 类名(父类):
    属性1 = 值1
    属性2 = 值2
    方法1()
    方法2()
    方法3()

init构造函数

python 复制代码
class 类名(父类):
    def __init__(self, 参数列表):
        self.属性 = 值
  • init第一个参数是self,代表当前对象

  • 在init方法内部,可以把各种属性绑定到self上

  • 在类中定义的方法,如果没有参数,则不需要写括号

访问限制

  • 内部属性不被外部访问,可以把属性前加 __

继承

python 复制代码
class 子类(父类):
python 复制代码
class Animal(object):
    def run(self):
        print('Animal is running...')

class Dog(Animal):
    def run(self):
        print('Dog is running...')

class Cat(Animal):
    def run(self):
        print('Cat is running...')

def running_test():
    animals = [Dog(), Cat()]
    for animal in animals:
        animal.run()

running_test()

获取对象信息

  • type()判断对象类型
  • types 使用types判断,对象是否为函数
  • isinstance()判断对象是否为某个类的实例
  • dir()获取对象所有属性
  • hasattr()判断对象是否具有某个属性
  • getattr()获取对象的某个属性
  • setattr()设置对象的某个属性

实例属性和类属性

  • 实例属性:每个实例都有自己的属性值,不同对象的属性值可能是不一样的
  • 类属性:就是静态属性,每个实例都可以访问,值都一样
python 复制代码
class Animal(object):
    静态属性 = 'Animal'

@property装饰器

  • 使用@property装饰器,可以把方法变成属性
python 复制代码
    @property
    def score(self):
        return self.__score
    
    @score.setter
    def score(self, value):
        if not isinstance(value, int) or value < 0 or value > 100:
            raise ValueError('bad score')
        self.__score = value

多继承

在python中多重继承比较简单,只需要在定义类后面多加父类名字即可

python 复制代码
class 子类(父类1, 父类2):

MixIn设计方法:通过增加继承类,对一个类增加多个功能

定制类

__str__
  • 使用__str__()可以自定义打印输出的内容
__repr__()
  • 返回程序开发者看到的字符串
__iter__()
  • 如果一个类想被用于(for...in)遍历,就必须实现一个 __iter__()
  • __next__()用于拿到下一个值
__getitem__()
  • 使用[]访问对象时,会调用这个方法
相关推荐
于先生吖9 分钟前
国际语言适配拼车系统 JAVA 后端源码 + 同城顺风车功能全解析
java·开发语言
ID_1800790547316 分钟前
超详细:Python 调用淘宝商品详情 API 完整教程
开发语言·python
小恶魔巴巴塔26 分钟前
C语言避免头文件循环
c语言·开发语言
西西学代码29 分钟前
Flutter---构造函数
开发语言·javascript·flutter
平常心cyk35 分钟前
Python基础快速复习——函数的多种传参方式
python
lanboAI41 分钟前
基于卷积神经网络的舌苔诊断系统,resnet50,alexnet, shufflenet模型【pytorch框架+python源码】
pytorch·python·cnn
计算机安禾42 分钟前
【数据结构与算法】第10篇:项目实战:学生信息管理系统(线性表版)
开发语言·数据结构·算法·visual studio
QWsin1 小时前
【Pydantic】Pydantic 是什么?
python
WeeJot嵌入式1 小时前
爬虫对抗:ZLibrary反爬机制实战分析
爬虫·python·网络安全·playwright·反爬机制
MyBFuture1 小时前
Halcon模板匹配核心技术解析大全
开发语言·人工智能·计算机视觉·halcon·机器视觉