Python基础-面向对象(下)

本文详细介绍了面向对象编程的三大特性——封装、继承和多态,以及类属性、实例属性、类方法和静态方法的使用。通过示例代码展示了如何在Python中实现这些概念。类属性是所有实例共享的,可以节省内存;类方法和静态方法则提供了不同级别的方法调用方式。了解并掌握这些知识,能帮助开发者更好地设计和实现面向对象的程序。
摘要由CSDN通过智能技术生成

面向对象三大特征

类属性和实例属性

类方法和静态方法

一、面向对象三大特征

封装

将属性和方法写到类里面的操作就是封装

封装可以为属性和方法添加私有权限

继承

子类默认继承父类的所有属性和方法

子类可以重写父类的属性和方法

多态

传入不同的对象,产生不同的结果

多态

多态是一种使用对象的方式,子类重写父类的方法,调用不同的子类对象,相同的父类方法,可以产生出不同的结果。传入不同的对象,产生不同的结果,最好依赖继承

实现步骤:

定义父类,并提供公共方法

定义子类,并重写父类方法

传递子类对象给调用者,可以看到不同的子类执行效果不同

举例

class Dog(object):
    def work(self):
        print('我是父类的狗狗')


class SmallDog(Dog):
    def work(self):
        print('小狗在工作')


class BigDog(Dog):
    def work(self):
        print('大狗在工作')


class Person(object):
    def with_dog(self, dog):
        dog.work()


sd = SmallDog()
bd = BigDog()

p = Person()
p.with_dog(sd)
p.with_dog(bd)
# 输出
# 小狗在工作
# 大狗在工作

二、类属性和实例属性

2.1类属性就是类对象所拥有的属性,它被该类的所有实例对象所共有

类属性可以使用 类对象或实例对象访问

用法:

类.属性名     (类属性)

对象.属性名    (实例属性)

class Dog(object):
    tooth = 10


dahuang = Dog()
xiaohei = Dog()

print(Dog.tooth)
print(dahuang.tooth)
print(xiaohei.tooth)

类属性的优点:

记录的某项数据,始终保持一致时,则定义类属性

实例属性要求,每个对象为其单独开辟一块内存空间来记录数据,而类属性,为全类所共有,仅占用一份内存,更节省内存空间

2.2修改类属性

修改类属性只能通过类对象修改,不能通过实例对象,如果通过实例对象修改类属性,表示的是创建了一个同名的实例属性

class Dog(object):
    tooth = 10


Dog.tooth = 222
print(Dog.tooth)
dahuagn = Dog()
xiaohei = Dog()
dahuagn.tooth = 3333
print(Dog.tooth)
print(dahuagn.tooth)
# 输出
# 222
# 222
# 3333

三、类方法

特点:

用装饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数

使用场景:

当方法中需要使用类对象(如访问私有类属性)时,定义类方法

类方法一般和类属性配合使用

class Dog(object):
    __tooth = 100

    @classmethod
    def print_tooth(cls):
        return cls.__tooth

    
dahuang = Dog()
res = dahuang.print_tooth()
print(res)

四、静态方法 

特点:

通过装饰器@staticmethod来进行修饰,静态方法既不需要传递类对象也不需要传递实例对象(形参没有self/cls)

静态方法,可以通过实例对象和类对象去访问

使用场景:

当方法中,既不需要使用实例对象,也不需要使用类对象,定义静态方法

取消不需要的参数传递,有利于减少内存消耗和性能消耗

class Dog(object):

    @staticmethod
    def get_tooth():
        print('这是一个静态方法')


dahuang = Dog()
dahuang.get_tooth()
Dog.get_tooth()
# 输出 
# 这是一个静态方法
# 这是一个静态方法

五、总结:

面向对象三大特性:

封装

继承

多态  

类属性

         归属于类对象的属性,所有对象共有的属性

          创建、修改

实例属性 

类方法

@classmethod

def xxx(cls):

        代码

静态方法

@staticmethod

def xx():

        代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NeilNiu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值