转载请注明出处
浅析python中的类
面向对象最重要的概念就是类(Class)和实例(Instance)
面向对象的设计思想是从自然界中来的,因为在自然界中,类(Class)
和实例(Instance)的概念是很自然的。Class 是一种抽象概念,比如我
们定义的 Class——Student,是指学生这个概念,而实例(Instance)则
是一个个具体的 Student,比如,Bart Simpson 和 Lisa Simpson 是两个具
体的 Student。
所以,面向对象的设计思想是抽象出 Class,根据 Class 创建 Instance。
面向对象的抽象程度又比函数要高,因为一个 Class 既包含数据,又包
含操作数据的方法。
关于类
类与类的属性
class CocaCola:
formula = ['caffeine','sugar','water','soda']
使用class来定义一个类,formula为一个装载着列表的变量
在类里面赋值的变量就是类的变量,而类的变量又叫类的属性(Class Atrribute)
类的实例化
coke_a = CocaCola()
coke_b = CocaCola()
------------------------
print (CocaCola.formula)
print (coke_a.formula)
print (coke_b.formula)
我们在左边创建一个变量,在右边指定类的名称(类似于赋值),这就叫类的实例化。实例化后的对象称为实例(instance)
类属性的引用
在类的名字后面输入’ . ‘ ,IDE会自动联想出我们之前在定义类的时候卸载里面的属性,这便是类属性的引用(attribute references)
类的属性会被所有类的实例共享,所以当你在类的实例后面再加上’ . ‘,索引用的属性值是完全一样的。
print (CocaCola.formula)
print (coke_a.formula)
print (coke_b.formula)
------------------------------------
输出结果:
>>> ['caffeine','sugar','water','soda']
>>> ['caffeine','sugar','water','soda']
>>> ['caffeine','sugar','water','soda']
实例属性
class CocaCola:
formula = ['caffeine','sugar','water','soda']
coke_a = CocaCola()
coke_a.local_logo = '可口可乐' #创建新的实例属性
print (coke_a.local_logo) #打印实例属性引用结果
实例方法
说明:
类的实例可以使用方法。方法就是函数,但是我们把这个函数称之为方法(Method),由于方法是供实例使用的。因此,我们还可以称之为实例方法(Instance Method)。
class CocaCola:
formula = ['caffeine','sugar','water','soda']
def drink(self):
print('Energy!')
coke = CocaCola()
coke.drink()
关于 self
注意以下代码中原本self的位置变为了test
class CocaCola:
formula = ['caffeine','sugar','water','soda']
def drink(test):
print('Energy!')
coke = CocaCola()
coke.drink()
实例的使用与使用函数相似
coke = CocaCola
coke.drink() == CocaCola.drink(coke)#左右两边的写法完全一致
==按照Python的规矩,我们还是统一使用self==
更多的参数
class CocaCola:
formula = ['caffeine','sugar','water','soda']
def drink(self,how_much):
if how_much == 'a sip':
print ('Cool~')
elif how_much == 'whole bottle'
print ('Headache!')
coke = CocaCola()
coke.drink('a sip')
魔术方法
python中的一些方法被称之为“魔术方法”,_init_()就是其中之一。
- _init_()是initialize(初始化)的缩写
- 如果你在类里定义了它,那么当你在创建实例的时候它能帮你自动地处理一些事情。比如,新增实例属性等。
class CocaCola():
formula = ['caffeine','sugar','water','soda']
def __init__(self):
self.local_logo = '可口可乐'
def drink(self):
print ('Engergy!')
coke = CocaCola()
print (coke.local_logo)
- 再来一段代码展示其灵活性
class CocaCola():
formula = ['caffeine','sugar','water','soda']
def __init__(self):
for element in self.formula:
print ('Coke has {}!'.format(element))
def drink(self):
print ('Engergy!')
coke = CocaCola()
----------------------------------
output:
Coke has caffeine!
Coke has sugar!
Coke has water!
Coke has soda!