类
- class表明这是一个类
- object:父类的名字,定义的类继承自父类,不写的时候默认是object。object是所有类的直接或间接父类
- 创建对象就是类的实例化:实例名=类()
class Player(object):
pass
rado=Player()
rado.name="rado"#这些都是给实例增加属性
rado.age=18#这些都是给实例增加属性
print(type(rado))#<class '__main__.Player'>
print(type(rado.age))#<class 'int'>
print(isinstance(rado, Player))#True
print(isinstance(rado,object))#True
规范一点的话,name、age是这个类所具有的共同特征,没必要单独增加,所以应该这样做
class Player(object):
def __init__(self,name,age):
self.name = name
self.age = age
rado=Player("rado",18)
print(rado.name,rado.age)#rado 18
这里看一下新增的内容
class Player(object):
def __init__(self):#self代表了rado这个实例化对象
print("start")
rado=Player()#输出start
这说明__init__初始化函数是默认执行的,不能改名
你可以在实例被创建后修改和新增属性
class Player(object):
def __init__(self,name,age):
self.name = name
self.age = age
rado=Player("rado",18)
rado.age=19
print(rado.__dict__,type(rado.__dict__))#{'name': 'rado', 'age': 19} <class 'dict'>
__dict__函数会返回所有属性的字典
类属性
区别于之前的实例属性,类属性一般会对实例属性进行统计或限制
class Player(object):
numbers=0#类属性
def __init__(self,name,age):
self.name = name
self.age = age
Player.numbers+=1
rado=Player("rado",18)
rado.age=19
print(rado.__dict__)#{'name': 'rado', 'age': 19}
print("欢迎第%d个玩家"%Player.numbers)#欢迎第1个玩家
下面我们综合之前学的内容,编一个可爱类
class cute(object):
numbers = 0
levels = ["还行", "好可爱", "化了", "可爱哭了", "此可爱只应理念世界存在"]
max_cute = 20000
def __init__(self, name, like, level):
self.name = name
self.like = like
self.level = level
cute.numbers += 1
if like > cute.max_cute:
raise Exception("最大的可爱值是20000,请重试!")
if level not in cute.levels:
raise Exception("这样的可爱法律允许但不提倡!")
bingo = cute("bingo", 200000, "挺可爱的")
print(bingo)#输出:Exception: 最大的可爱值是20000,请重试!
结合异常处理的知识改进