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__()
  • 使用[]访问对象时,会调用这个方法
相关推荐
疯狂打码的少年1 小时前
编译程序与解释程序的区别
java·开发语言·笔记
caimouse4 小时前
reactos编码规范
c语言·开发语言
xieliyu.8 小时前
Java算法精讲:双指针(三)
java·开发语言·算法
love530love8 小时前
LiveTalking 数字人项目 Windows 部署完全指南(EPGF 架构)
人工智能·windows·python·架构·livetalking·epgf
遇事不決洛必達8 小时前
【Python基础】GIL 锁是什么及其对爬虫的影响
爬虫·python·线程·进程·gil锁
CryptoPP9 小时前
快速对接东京证券交易所API数据:实战指南与代码示例
开发语言·人工智能·windows·python·信息可视化·区块链
ZC跨境爬虫9 小时前
跟着 MDN 学JavaScript day_7:数学运算与逻辑判断实战测试
开发语言·前端·javascript·学习·ecmascript
探物 AI9 小时前
把 MambaOut 塞进 YOLOv11:会有什么样的反应
python·yolo·计算机视觉
如竟没有火炬10 小时前
最大矩阵——单调栈
数据结构·python·线性代数·算法·leetcode·矩阵
阳区欠10 小时前
【LangChain】LLM基础介绍
开发语言·python·langchain