类是有一些系列有共同特征和行为事物的抽象概念的总和。
类和对象
创建类语法:
class 类名:
代码
实例化对象语法:
对象名 = 类名()
调用类属性和方法语法:
对象名.属性:
对象名.方法()
class Coco:
formula = ['caffeine','sugar','water','soda']
"""
使用class来定义一个类,就如同创建函数时使用的def定义一个函数一样;
缩进的地方有一个装载着列表的变量formula,在类里面赋值的变量就是类的变量,而类的变量有一个专有的术语,称之为类的属性;
类的变量与我们接触到的变量并没有什么区别,字符串、列表、字典、整数等等都可以是变量,那么她们当然都可以成为类的属性;
"""
# 类的实例化
"""
左边创建一个变量,右边写上类的名称,我们称之为实例化
被实例化后的对象,我们称之为实例,或者说类的实例
"""
coke_for_me = Coco()
coke_for_you = Coco()
"""
类属性引用
在类的名字后面输入“.”,IDE就会自动联想出我们之前在定义类的时候写在里面的属性,而这就是类属性的引用
类的属性会被所有类的实例共享,所以当你在类的实例后面再点上“.”,索引用的属性值是完全一样的
"""
print(Coco.formula)
print(coke_for_me.formula)
print(coke_for_you.formula)
打印结果:
['caffeine', 'sugar', 'water', 'soda']
['caffeine', 'sugar', 'water', 'soda']
['caffeine', 'sugar', 'water', 'soda']
# 实例属性
"""
在创建了类之后,通过object。new_attr的形式进行一个赋值,于是我们就得到了一个新的实例变量,
实例的变量就是实例变量,而实例变量有一个专有的术语,我们称之为实例属性
"""
class Coco:
formula = ['caffeine','sugar','water','soda']
coke_for_China = Coco()
coke_for_China.local = '可口可乐'
print(coke_for_China.local)
打印结果:
可口可乐
"""
类的实例可以引用属性
方法就是函数,我们把这个函数称之为方法
方法是实例提供的,因此我们还可以称之为实例方法
"""
class Coco:
formula = ['caffeine','sugar','water','soda']
def drink(self):
print('给我力量吧!')
coke = Coco()
res = coke.drink()
print(res)
打印结果:
给我力量吧!
None
class Coco:
formula = ['caffeine','sugar','water','soda']
def drink (self,how_much):
if how_much =='喝一杯':
print('太酷了')
elif how_much == '喝一瓶':
print('喝太多了')
coke = Coco()
res = coke.drink('喝一杯')
print(res)
打印结果:
太酷了
None
# __init__()方法
"""
__init__()如果你在类里定义了它,在创建实例的时候它就能它就能帮你自动第处理很多事情—比如新增实例属性;
__init__()是initialize(初始化)的缩写,这也就是意味着及时我们在创建实例的时候不去引用init__()方法,其中的命令也会被自动地执行
"""
class Coco():
formula = ['caffeine','sugar','water','soda']
def __init__(self):
self.local_logo = '可口可乐'
def drink(self):
print('加油')
coke = Coco()
print(coke.local_logo)
打印结果:
可口可乐
"""
self 必写参数,__init__()同样可以有自己的参数,同时也不需要obj.__init__()的方式来调用(因为是自动执行)而是在实例化的时候往类后面的括号中放进参数,
相应的所有参数都会传递到这个特殊的__init__()方法中,和函数的参数的用法完全相同。
"""
class Coco(): #定义Coco类
formula = ['caffeine','sugar','water','soda'] #类的属性
def __init__(self): #实例方法
for element in self.formula:
print('coke has {}!'.format(element))
def drink(self):
print('加油')
coke = Coco()
打印结果:
coke has caffeine!
coke has sugar!
coke has water!
coke has soda!
class Coco():
formula = ['caffeine','sugar','water','soda']
def __init__(self,logo_name):
self.logo = logo_name #self.logo :类的属性,logo_time;传入的这个参数作为变量,也就是说这个变量的赋值所存储的结果将取决于初始化的时候所传进来的参数logo_name,传进来什么那么它就是将是什么
def drink(self):
print('加油')
coke = Coco('可口可乐')
print(coke.logo)
打印结果:
可口可乐