Python中的类对象示例详解

 更新时间:2021年03月29日 09:00:48   作者:大虾昊  
这篇文章主要介绍了Python中类对象示例的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

抽象特点

Python 一切皆对象,基于此概念,对 类 class 有以下特点:

类与实例的属性

类对象创建可选择定义类属性,创建实例对象时,实例属性自动执行类的__init__方法初始化

实例对象自动继承相应的类属性(如果有),但实例属性优先级更高

实例方法,类方法,静态方法的参数

实例方法是一般函数但实例方法需要传入self参数(与一般函数的区别)

类方法和静态方法是通过装饰器实现的函数,类方法需要传入cls参数,静态方法无需传入self参数或者是cls参数(但也能传入参数)

其中self参数必须指向实例对象,cls参数指向定义的类对象(self与cls是约定俗成的,原则上可以用其它名字)

方法与函数

其中方法是在对象语境下的函数,实例调用实例方法即调用方法,类调用实例方法即调用函数

具体细节

类举例

class Toy(object): # 此处此类可理解为设计一个Toy的蓝图
  # 赋值定义类属性,记录所有玩具数量
  count = 0

  def __init__(self, name): # 用于实例初始化
    self.name = name
    # 类属性 +1
    Toy.count += 1

  @classmethod # 此装饰器表示是类方法,类方法无需创建实例对象即可调用,最为灵活
  def show_toy_count(cls):
    print('玩具对象的数量 %d' % cls.count, cls)

  @staticmethod # 此装饰器表示是静态方法,静态方法本质上是封装在类对象内的的函数,常用于测试
  def hi():
    print('Hello!')

  # 实例方法
  def beybey(self):
    print('Sad!', self)


# 创建实例对象
toy1 = Toy('乐高')
toy1.hand = 2
toy2 = Toy('泰迪熊')
toy3 = Toy('哥斯拉')
print(toy1.name, toy2.name, toy3.name)

# 点语法调用类方法与静态方法,如:类名.方法
Toy.show_toy_count()
Toy.hi()
# 实例对象调用类方法时,与类对象调用类方法无异,但实际上调用仍通过实例对象继承的类对象
toy1.show_toy_count()
print(toy1.hand)
# 实例对象调用静态方法时,与类对象调用静态方法无异,但实际上调用仍通过实例对象继承的类对象
toy2.hi()
# 实例对象调用实例方法,Python的解释器内部,当我们调用toy3.beybey()时,实际上Python解释成Toy.beybey(toy3)
toy3.beybey()
# Toy.beybey() # 错误语法,self必须指向实例对象,此处实例方法指向类对象而不是实例对象
Toy.beybey(toy3)
# 类与其实例的类型和内存地址
print(type(Toy), id(Toy), type(toy3), id(toy3))

输出结果

乐高 泰迪熊 哥斯拉
玩具对象的数量 3 <class '__main__.Toy'>
Hello!
玩具对象的数量 3 <class '__main__.Toy'>
2
Hello!
Sad! <__main__.Toy object at 0x000001FD9F794D60>
Sad! <__main__.Toy object at 0x000001FD9F794D60>
<class 'type'> 2188806599664 <class '__main__.Toy'> 2188813880672

类方法与静态方法举例

class Cat: # 或者class Cat()不写父对象形式定义类对象,会默认继承祖先object对象
  name = '小敏'

  @classmethod
  def www(cls):
    print('%s 干嘛!' % cls.name)
    # cls.call() # 类方法可以调用静态方法

  @staticmethod
  def call():
    print('喵喵~')
    Cat.name = '小敏臭弟弟'
    print(Cat.name)
    # Cat.www() # 静态方法可以调用类方法


Cat.www()
Cat.call()
# 没有定义实例方法可以创建实例对象继承并使用其中方法
cat1 = Cat()
cat1.www()
cat1.call()

输出结果

小敏 干嘛!
喵喵~
小敏臭弟弟
小敏臭弟弟 干嘛!
喵喵~
小敏臭弟弟

祖先对象中包含的基本方法

print(dir(object))

['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']

总结

类 class 是 Python 中最核心的对象,定义类通常要写好类属性,实例方法,类方法,静态方法等几部份。把类和继承的类的实例比作函数中的主函数和子函数,那么类属性可认为是全局变量,实例属性可认为是局部变量;把类看成葫芦,实例方法则是方便我们照画瓢的同时,提供因地制宜的可能;类方式能够使我们更高效的使用类的功能而静态方法往往能帮助我们了解类的功能。

类 的各方法间并不是彼此毫不相干,而是有着很强的共性,具体使用时应灵活运用,不应局限在抽象的定义之中。

到此这篇关于Python中类对象的文章就介绍到这了,更多相关Python类对象内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python input()函数案例教程

    Python input()函数案例教程

    在 Python 中,input() 函数用于获取用于的输入,并给出提示。input() 函数,总是返回 string 类型,因此,我们可以使用 input() 函数,获取用户输入的任何数据类型 ,这篇文章主要介绍了Python input()函数案例详解,需要的朋友可以参考下
    2023-01-01
  • Python梯度提升库XGBoost解决机器学习问题使用探究

    Python梯度提升库XGBoost解决机器学习问题使用探究

    XGBoost是一个流行的梯度提升库,特别适用于解决各种机器学习问题,它在性能和速度上表现出色,常被用于分类、回归、排序、推荐系统等应用,本文将介绍XGBoost的基本原理、核心功能以及一些详细的示例代码
    2024-01-01
  • Python+OpenCV实现六种常用图像特效

    Python+OpenCV实现六种常用图像特效

    这篇文章主要为大家介绍了用Python和OpenCV实现的六种常见图像特效:图像融合、灰度处理、马赛克效果、浮雕效果、毛玻璃效果和颜色反转,需要的可以参考一下
    2022-05-05
  • Python Tkinter之事件处理详解

    Python Tkinter之事件处理详解

    事件处理,是 GUI 程序中不可或缺的重要组成部分,相比来说,控件只是组成一台机器的零部件。本文我们将对 Tkinter 中的事件处理机制做详细的介绍,需要的可以参考一下
    2022-01-01
  • Python使用Qt5实现水平导航栏的示例代码

    Python使用Qt5实现水平导航栏的示例代码

    本文主要介绍了Python使用Qt5实现水平导航栏的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • python selenium模拟点击问题解决方案

    python selenium模拟点击问题解决方案

    这篇文章主要介绍了python selenium模拟点击问题,涉及到安装谷歌浏览器和浏览器驱动的相关知识介绍,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • Python实现的远程文件自动打包并下载功能示例

    Python实现的远程文件自动打包并下载功能示例

    这篇文章主要介绍了Python实现的远程文件自动打包并下载功能,结合实例形式分析了Python使用spawn()方法执行ssh、scp 命令实现远程文件的相关操作技巧,需要的朋友可以参考下
    2019-07-07
  • python中networkx函数的具体使用

    python中networkx函数的具体使用

    本文主要介绍了python中networkx函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • python爬虫基础之urllib的使用

    python爬虫基础之urllib的使用

    这篇文章主要介绍了python爬虫基础之urllib的使用,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • django 解决自定义序列化返回处理数据为null的问题

    django 解决自定义序列化返回处理数据为null的问题

    这篇文章主要介绍了django 解决自定义序列化返回处理数据为null的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05

最新评论