类是一个特殊的对象
Python中一切皆对象
class AAA:定义类属性为类对象
obj1 = AAA:属于实例对象
在运行程序时,类同样会被加载到内存
在Paython中,类是一个特殊的对象–类对象
除了封装实例(对象)的属性和方法外,类对象还
可以有自己的属性和方法
通过类名的方式可以直接访问类的属性或者调用类的方法
类属性就是针对类对象定义的属性使用赋值语句在class关键字下方可以定义类属性
类属性用于记录于这个类相关的特征
类方法就是针对类对象定义的方法
在类方法内部就可以直接访问类属性或者调用其他
类方法
语法如下:
@classmethod
def 类方法(cls)
pass
示例一
class Tool(object):
#使用了赋值语句定义类函数,记录所有工具的数量
count = 0
def __init__(self,name):
self.name = name
#让类属性的值+1
Tool.count += 1
#创建工具对象(对象在创建的时候,会自动调用初始化方法)
tool1 = Tool('斧头')
tool2 = Tool('榔头')
tool3 = Tool('梯子')
#输出工具对象总数
#使用类名,属性名来获取
print Tool.count
示例二
class Toy(object):
#1.定义类属性
count = 0
@classmethod
def show_toy_count(cls):
print '玩具对象的数量 %d '% cls.count
def __init__(self,name):
self.name = name
#让类属性的值+1
Toy.count += 1
#创建玩具对象
toy1 = Toy('乐高')
toy2 = Toy('玩具熊')
toy3 = Toy('遥控车')
#调用类方法
Toy.show_toy_count()
#在方法的内部,可以直接访问类属性
类属性-类方法-综合示例
class Game(object):
top_score = 0
def __init__(self,player_name):
self.player_name = player_name
@staticmethod
def show_help():
print '游戏开始前请看游戏规则'
@staticmethod
def show_top_score(cls):
print '当前玩家历史记录 %d' % cls.top_score
def star_game(self):
print '%s 游戏开始' % self.name_player
Game.show_help()
Game.show_top_score()
game = Game('小壮')
game.str_game()
私有属性和私有方法示例
class Women():
def __init__(self,name):
self.name = name
self.__age = 18
def __secret(self):
print '%s 的年龄是 %d '% (self.name,self.__age)
lily = Women('lily')
lily.secret()
单例设计模式示例
"""
class MusicPlayer(object):
def __new__(cls, *args, **kwargs):
#第一个参数cls:哪一个类调用 就传递哪一个类
#第二个参数*args:多值参数
#第三个参数**kwargs:多值的字典参数
print '创建对象,分配空间'
def __init__(self):
print '播放器初始化'
player = MusicPlayer()
print player
示例二
class Singleton(object):
def __new__(cls, *args, **kwargs):
if not hasattr(cls,'_the_instance'):
cls._the_instance=object.__new__(cls,*args, **kwargs)
return cls._the_instance
class A(Singleton):
print 'init before'
def __init__(self):
print 'i am __init__'
def f(self):
print 'i am f'
a=A()
b=A()
a.f()
print 'done'