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__()
  • 使用[]访问对象时,会调用这个方法
相关推荐
TDengine (老段)9 分钟前
基于 TSBS 标准数据集下 TimescaleDB、InfluxDB 与 TDengine 性能对比测试报告
java·大数据·开发语言·数据库·时序数据库·tdengine·iotdb
lgily-122512 分钟前
常用的设计模式详解
java·后端·python·设计模式
陈苏同学1 小时前
MPC控制器从入门到进阶(小车动态避障变道仿真 - Python)
人工智能·python·机器学习·数学建模·机器人·自动驾驶
mahuifa1 小时前
python实现usb热插拔检测(linux)
linux·服务器·python
rylshe13141 小时前
在scala中sparkSQL连接mysql并添加新数据
开发语言·mysql·scala
小宋加油啊1 小时前
Mac QT水平布局和垂直布局
开发语言·qt·macos
MyhEhud2 小时前
kotlin @JvmStatic注解的作用和使用场景
开发语言·python·kotlin
想睡hhh2 小时前
c++进阶——哈希表的实现
开发语言·数据结构·c++·散列表·哈希
狐凄2 小时前
Python实例题:pygame开发打飞机游戏
python·游戏·pygame
漫谈网络2 小时前
Telnet 类图解析
python·自动化·netdevops·telnetlib·网络自动化运维