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__()
  • 使用[]访问对象时,会调用这个方法
相关推荐
灯澜忆梦2 小时前
GO_并发编程---定时器
开发语言·后端·golang
-银雾鸢尾-3 小时前
C#中的StringBuilder相关方法
开发语言·c#
-银雾鸢尾-3 小时前
C#中结构体与类的区别;抽象类与接口的区别
开发语言·c#
大模型码小白4 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
麻雀飞吧5 小时前
最新量化学习路径,交易认知和技术实现要并行
人工智能·python
段一凡-华北理工大学6 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
Ljwuhe6 小时前
C++——多态
开发语言·c++
心平气和量大福大7 小时前
C#-WPF-Window主窗体
开发语言·c#·wpf
从零开始的代码生活_8 小时前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法
云小逸8 小时前
【C++ 第七阶段:模板、泛型编程与工程综合详解】
开发语言·c++