Tips:如果是从基础部分一路跟着过来的朋友,需要告诉你们的是我偷偷吧编程工具PyCharm装上了,今天算是进入面向对象编程环节。本人使用的编程工具是PyCharm,未安装的可以先去官网下载安装。下面进入正题。
如果我们用可乐来代表一个类,那么可乐的配方(formula)比如糖份、水等这些成分就是这个类中所包含的属性。
1.定义一个类:前面我们用def来定义一个函数,类的定义使用class。
class CocaCola:
formula = ['sugar', 'water', 'soda', 'caffeine']
2.类的实例化:有了可乐的配方,我们来制作两杯可乐。左边是一个变量,右边是类的名称,这种类似赋值的语句就是类的实例化,drink1和drink2就是类的实例。
drink1 = CocaCola()
drink2 = CocaCola()
3.类属性引用:所有的这些类的实例都共享类中的属性。
print(CocaCola.formula)
print(drink1.formula)
print(drink2.formula)
['sugar', 'water', 'soda', 'caffeine']
['sugar', 'water', 'soda', 'caffeine']
['sugar', 'water', 'soda', 'caffeine']
4.实例属性:实例除了拥有类的所有属性外,还可以加入自己的属性,比如你的可乐要加冰,这就叫实例属性。
drink1.and_ice = 'ice'
print(drink1.and_ice)
ice
5.实例方法:在类中定义一个方法(函数),进而让实例使用这个方法。
class CocaCola:
formula = ['sugar', 'water', 'soda', 'caffeine']
def drink(self):
print('可口可乐')
drink1 = CocaCola()
drink1.drink()
可口可乐
self:即被创建的实例本身,你可以把self改成drink1试试,输出一致。
6.多个参数:def drink()中可以有多个参数:
class CocaCola:
formula = ['sugar', 'water', 'soda', 'caffeine']
def drink(self, and_ice):
if and_ice == 'and ice':
print('加冰可乐')
elif and_ice == 'no ice':
print('常温可乐')
drink1 = CocaCola()
drink1.drink('and ice')
加冰可乐
7._init_()方法:
_init_()是initialize(初始化)的缩写,当在类中定义了它,在创建实例的时候即使不去引用它,其中的方法也会被自动执行。
class CocaCola:
formula = ['sugar', 'water', 'soda', 'caffeine']
def __init__(self):
print('来杯可乐')
def drink(self, and_ice):
if and_ice == 'and ice':
print('加冰可乐')
elif and_ice == 'no ice':
print('常温可乐')
drink1 = CocaCola()
drink1.drink('and ice')
来杯可乐
加冰可乐
个人理解,_init_()就是类本身,其中的方法就是类的方法,声明的变量就是类的变量。
class CocaCola:
formula = ['sugar', 'water', 'soda', 'caffeine']
def __init__(self, name):
self.name = name
def drink(self, and_ice):
if and_ice == 'and ice':
print('加冰可乐')
elif and_ice == 'no ice':
print('常温可乐')
drink1 = CocaCola('可口可乐')
print(drink1.name)
可口可乐
self.name = name:左边是变量作为类的属性,右边是传入的参数。就像上面第4条那样在drink1中加入了加冰这条属性一样。
8.类的继承和覆盖:在新类CocaColaNoCalories后的括号中放入CocaCol,就继承(inheritance)了父类CocaCol成为其子类。CocaColaNoCalories在完全继承了父类方法和变量的同时还可以通过自身的改动来覆盖(override)父类的方法和变量。
class CocaCola:
calories = 140
sodium = 45
formula = ['sugar', 'water', 'soda', 'caffeine']
def __init__(self, name):
self.name = name
print(self.name)
def drink(self):
print(self.calories)
class CocaColaNoCalories(CocaCola):
calories = 0
drink = CocaColaNoCalories('零能量可乐')
drink.drink()
零能量可乐
0