python 面向对象

本文介绍了Python面向对象编程的基本概念,包括如何创建和调用类,类的属性(添加、获取和划分),继承、重写以及多态的概念。此外,还讨论了对象的类型(实例对象和类对象)以及方法的分类(实例方法、类方法和静态方法)。文章通过示例代码详细阐述了这些概念的应用。
摘要由CSDN通过智能技术生成


前言

pthon 创建类,属性,对象


一、创建及调用

  • 创建类 class类名
  • 创建对象 类名()
  • 调用方法 对象.方法名()
class Cat:  #创建类
    def eat(self):
        print("小猫爱吃鱼") 
    def drink(self):
        print(f'{self.name} 喝水')
bule=Cat() #创建对象
bule.eat() #调用方法
bule.name='蓝猫'
bule.drink()

二、属性

1.添加属性

  • 类外部添加属性 对象.属性名=属性值(一般不使用)

  • 类内部添加属性 self.属性名=属性值

  • 内部添加属性一般写在_ _ init _ _方法中

    • 两个下划线开头,两个下划线结尾
    • 创建对象后会自动调用
    • 作用:给对象添加属性,初始化方法;默写代码,每次创建对象都要执行
    • 书写注意事项,init方法中存在除了self以外的参数,必须传参
  • _ _ str_ _方法
    使用print打印对象自动调用
    这个方法中一般书写对象的,属性信息,定义打印对象的信息
    这个方法必须返回字符串

  • _ _ del _ _方法
    对象被删除销毁自动调用

class Demo:
    def __init__(self,num) -> None:
        print('00')
    def __del__(self):
        print('11')
a=Demo('a')
del a
b=Demo('b')


class People:
    def __init__(self,name,weight) -> None:
        self.name=name
        self.weight=weight

    def run(self):
        print('跑步5km')
        self.weight-=0.5
    def eat(self):
        print('吃零食')
        self.weight+=0.5
    def __str__(self) -> str:
        return f"姓名:{self.name},体重:{self.weight}"


xm=People('小明',75)
print(xm)
xm.run()
print(xm)
xm.eat()
print(xm)

2.获取属性

  • 类内部获取属性 self.属性名
  • 类外部获取属性 对象.属性名

3.属性的划分

  • 实例属性

    • 实例对象具有的属性
    • init方法中,使用self.属性名=属性值定义
    • 方法中self.属性名获取
    • 内存,在每个实例中都存在一份
    • 使用:通过self定义;找多个对象来判断值都是一样的,如果一样的,同时变化,则一般定义为类属性,否则定位为实例属性
  • 类属性

    • 类对象具有的属性
    • 在类内部,方法外部,直接定义变量,就是类属性
    • 定义:类对象.属性名=属性值或类名.属性名=属性值
    • 方法调用 类对象.属性名 或 类名.属性名
    • 内存,只有在类对象中存在一份
import random

class Game:

    top_score=0

    @staticmethod

    def show_help(self):
        print('这是游戏的帮助信息')

    @classmethod

    def show_top_score(self):
        print(f'{self.name}的最高分数是{Game.top_score}')

    def start_game(self):
        score=random.randint(10,100)
        print(f'本次得分为{score}')
        if score>Game.top_score:
            Game.top_score=score
        else:
            pass


    def __init__(self,name) -> None:
        self.name=name

score=Game('小明')

score.start_game()
score.show_help()
score.show_top_score()
score.start_game()
score.show_top_score()
score.start_game()
score.show_top_score()

三、继承、重写、多态

继承

  • class 类名(父类名)
  • 减少代码的冗余
  • 继承后子类可以使用父类公有的属性和方法
  • class A 的父类是object
class A(object):
    def add(self,a,b):
        return a+b

class B(A):
    def sub(self,a,b):
        return a-b

count=B()
print(count.add(2,3))
print(count.sub(5,2))

重写

  • 在子类中定义了和父类中名字相同的方法
  • 父类中的方法不能满足子类对象的需求,所以重写
  • 方式
    • 覆盖
      父类中功能完全抛弃
      直接在子类中,定义和父类中相同否方法名
      直接在方法中书写新代码
    • 扩展
      父类中的功能继续调用,添加新的功能
      直接在子类中,定义和父类中相同否方法名
      合适地方,调用父类中的方法
      super().方法()
class Animal:

    def eat(self):
        print('吃')

   

class Dog(Animal):
    def say(self):
        print('叫')
    def eat(self):
        print('00')
        super().eat()

class Xtq(Dog):
    def run(self):
        print('跑')

dog=Xtq()
dog.eat()
dog.say()
dog.run()

多态

  • 写代码调用的技巧
  • 同一个方法,传入不同对象,执行不同的结果
  • 以继承与重写为前提

四、对象的划分

实例对象(实例)

  • 类名()创建的对象
  • 创建对象的过程叫类的实例化
  • 平时的对象就是实例对象
  • 每个实例对象,都有自己的内存空间,保存自己的属性

类对象

  • 就是类
  • 类对象是python解释器在执行代码的过程中创建的
  • 类对象的作用
  • 使用类对象创建实例对象
    类名()
  • 类对象有自己的内存空间,可以保存一些属性信息
  • 一个代码中,一个类只有一份内存空间

五、方法的划分

使用def关键字定义在类中的函数就是方法

实例方法(常用)

  • 类中直接定义
  • 参数写为self表示实例对象
  • 调用对象.方法名()

类方法

  • 在方法名字上方书写@classmethod装饰器
  • 参数一般写为cls,表示类对象
  • 如果在方法中需要使用实例属性,需要使用self,可以定义为类方法

静态方法

  • 基本不用
  • 在方法名字上方书写@staticmethod装饰器
  • 方法中不需要使用实例属性,不使用类属性,可以用静态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值