python面向对象编程的三大特性,python 对象 类
1.类是一个特殊的对象。在Python中,一切都是对象:
Class AAA:定义的类属于类对象obj1=AAA()属于实例对象。程序运行时,类也会被加载到Python中,类是一个特殊的对象。程序运行时,内存中只有一个类对象,使用一个类可以创建多个对象实例。除了封装实例的属性和方法,类对象还可以有自己的属性和方法。
1.类别属性
2.类方法可以通过类名的方式访问类的属性或者调用类的方法.
2.类属性和实例属性2.1概念和用途类属性是在类对象中定义的属性,通常用于记录与该类相关的特征。类属性不会用于记录特定对象的特征。分类工具:
#使用赋值语句定义类属性,并记录创建的工具对象总数。
计数=0
def __init__(self,name):
self.name=name
#将类属性计数为1
Tool.count=1
#创建工具对象
工具1=工具(哈哈)
Tool2=工具(呵呵)
工具3=工具( Duo Duo )
#知道使用工具类创建了多少对象吗?
print( now % d tools % tool . count)2.2属性获取机制Python中有一个属性获取的向上查找机制。因此,有两种方法可以访问类属性:
1.类名。类别属性
2.对象。类属性(不推荐)注意
如果你使用对象。class attribute=value赋值语句,在不影响class属性的值的情况下,只有一个属性会被添加到对象中。3.类方法和静态方法。3.1类属性是为类对象定义的属性。可以在Class关键字下定义类属性,以记录与该类相关的特征。类方法是为类对象定义的方法。您可以直接访问类属性或在类方法中调用其他类方法。语法如下
@classmethod
类方法名称(cls):
pass方法需要用修饰符@classmethod来标识,告诉解释器这是一个类方法。class方法的第一个参数应该是调用其cls的方法,方法内的cls是哪个类的引用。这个参数和实例方法的第一个参数是self。也可以使用其他名称。但是,习惯上使用cls通过类名调用类方法。调用方法时,不需要传递cls参数。您可以通过cls访问方法内部的类的属性,或者调用类方法内部的其他类方法。您可以直接使用cls来访问类属性或调用类方法。
3.2开发静态方法时,如果需要在类中封装一个方法,这个方法:不需要访问实例属性或调用实例方法,也不需要访问类属性或调用类方法。这时候你可以把这个方法封装成一个静态的方法,一般可以叫做“游戏帮助”。语法如下
@静态方法
Def静态方法名():
pass的静态方法需要通过修饰符@staticmethod来标识,告诉解释器这是一个静态方法。通过类名调用静态方法类Dog:
#狗对象计数
计数=0
@静态方法
定义运行():
#不需要访问实例属性或类属性的方法
打印(小狗在跑.)
def __init__(self,name):
Self.name=3.3汇总实例方法3354需要访问实例属性类方法3354,只需要访问类属性静态方法3354,不需要访问实例属性和类属性来提问。
如果一个方法需要同时访问实例属性和类属性,那么应该定义为什么方法?
回答
应该定义实例方法,因为只有一个类,并且类名可以在实例方法内部使用。访问类属性# # case
类游戏(对象):
#游戏的最高分,职业属性
top_score=0
@静态方法
定义show_help():
打印(“游戏帮助”)
@classmethod
定义show_top_score(cls):
打印(游戏中的最高分是%d% cls.top_score )
def __init__(self,player_name):
self.player_name=player_name
def start_game(自己):
Print([%s]玩家请开始游戏.% self.player_name)
#使用类名。修改历史最高分
Game.top_score=99
# 1.查看游戏帮助
Game.show_help()
# 2.查看游戏中的最高分
Game.show_top_score()
# 3.创建一个游戏对象并开始游戏
游戏=游戏(小花)
game.start_game()
# 4.游戏结束后,查看游戏的最高分
Game.show_top_score()
转载请联系作者授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。