python的面向对象

发布于:2024-05-14 ⋅ 阅读:(119) ⋅ 点赞:(0)

python的面向对象

定义类

class 关键字

class 类名(父类):
    属性1 =1
    属性2 =2
    方法1()
    方法2()
    方法3()

init构造函数

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

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

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

访问限制

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

继承

class 子类(父类):
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()设置对象的某个属性

实例属性和类属性

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

@property装饰器

  • 使用@property装饰器,可以把方法变成属性
    @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中多重继承比较简单,只需要在定义类后面多加父类名字即可

class 子类(父类1, 父类2):

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

定制类

__str__
  • 使用__str__()可以自定义打印输出的内容
__repr__()
  • 返回程序开发者看到的字符串
__iter__()
  • 如果一个类想被用于(for…in)遍历,就必须实现一个 __iter__()
  • __next__()用于拿到下一个值
__getitem__()
  • 使用[]访问对象时,会调用这个方法

网站公告

今日签到

点亮在社区的每一天
去签到