gpt4 book ai didi

Python中的类对象示例详解

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 33 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Python中的类对象示例详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

抽象特点

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

类与实例的属性 。

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

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

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

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

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

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

方法与函数 。

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

具体细节

类举例 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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 。

类方法与静态方法举例 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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()

输出结果 。

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

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

?
1
2
3
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类对象内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。

原文链接:https://blog.csdn.net/weixin_49371288/article/details/115244644 。

最后此篇关于Python中的类对象示例详解的文章就讲到这里了,如果你想了解更多关于Python中的类对象示例详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com