自学python笔记6--类
自学python笔记6
自学Python第六天,打卡!
今天主要学习类的知识点
以可乐为例:
class COla:
formula=['sugar','water']#配方
- 1
- 2
1.类的实例化:
coke_for_me=COla()
- 1
但不管怎样,可乐和我的可乐配方仍然是一样的。
所以(类属性的引用):
print(COla.formula)
print(coke_for_me.formula)
- 1
- 2
输出结果一致。
类的属性与其他正常的变量没有什么太大的区别,比如说:
for ele in coke_for_me.formula:
print(ele)
- 1
- 2
2.创建实例属性:
coke_for_china=COla()
coke_for_china.local_logo='可口可乐'
- 1
- 2
3.打印实例属性引用结果:
print(coke_for_china.local_logo)
- 1
4.方法:(其实是函数,方法是供实例使用的,因此我们还可以称之为实例方法)
4.1
class COla:
formula=['sugar','water']
def drink(self):#self默认参数
print('Energy!')
- 1
- 2
- 3
- 4
4.1.1调用:
coke_for_me.drink()
- 1
4.1.2更多参数:
class COla:
formula=['sugar','water']
def drink(self,howmuch):
if howmuch=='a little':
print('Awesome!')
elif howmuch=='a bottle':
print('Awful!')
- 1
- 2
- 3
- 4
- 5
- 6
- 7
coke_for_me.drink('a little')
- 1
4.2方法举例: _ _ init _ _()
如果你在类里定义了它,在创建实例的时候它就能帮你自动地处理很多事情——比如新增实例属性。
4.2.1
class COla:
formula=['sugar','water']
def __init__(self):
self.local_logo='可口可乐'
def drink(self):#self默认参数
print('Energy!')
coke=COla()
print(coke.local_logo)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
4.2.2
class COla:
formula = ['caffeine','sugar','water','soda']
def __init__(self):
for element in self.formula:
print('Coke has {}!'.format(element))
def drink(self):
print('Energy!')
coke=COla()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
自动输出:
4.2.3更多参数
class COla:
formula=['sugar','water']
def __init__(self,logo_name):
self.local_logo=logo_name
def drink(self):#self默认参数
print('Energy!')
coke=COla('可口可乐')
print(coke.local_logo)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
5.类的继承:
class CocaCola:
calories = 140
sodium = 45
total_carb = 39
caffeine = 34
ingredients = ['High Fructose Corn Syrup','Carbonated Water',
'Phosphoric Acid','Natural Flavors','Caramel Color','Caffeine' ]
def __init__(self,logo_name):
self.local_logo = logo_name
def drink(self):
print('You got {} cal energy!'.format(self.calories))
class CaffeineFree(CocaCola):
caffeine = 0
ingredients = [ 'High Fructose Corn Syrup', 'Carbonated Water',
'Phosphoric Acid','Natural Flavors','Caramel Color']
coke_a = CaffeineFree('Cocacola-FREE')
print(coke_a.local_logo)
coke_a.drink()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
我们在新的类CaffeineFree 后面的括号中放入CocaCola,这就表示这个类是继承于CocaCola这个父类的,而CaffeineFree 则成为了CocaCola子类。类中的变量和方法可以完全被子类继承,但如需有特殊的改动也可以进行覆盖。可以看到CAFFEINE-FREE存在着咖啡因含量、成分这两处不同的地方,并且在新的类中也仅仅是重写了这两个地方,其他没有重写的地方,方法和属性都能照常使用。
6.类属性的运用
6.1
class TestA:
attr = 1
obj_a = TestA()
TestA.attr = 42
print(obj_a.attr)
- 1
- 2
- 3
- 4
- 5
- 6
类属性如果被重新赋值,则该类属性被引用时也发生了变化。
6.2
class TestA:
attr = 1
obj_a = TestA()
obj_b = TestA()
obj_a.attr = 42
print(obj_b.attr)
- 1
- 2
- 3
- 4
- 5
- 6
但只改变实例的属性并不改变其他实例引用的该属性的值。
6.3
class TestA:
attr = 1
def __init__(self):
self.attr = 42
obj_a = TestA()
print(obj_a.attr)
- 1
- 2
- 3
- 4
- 5
- 6
当类属性实例属性具有相同的名称时,以类中该属性最后的值为准。
7.类的扩展
obj1=1
obj2='string'
obj3=[]
obj4={}
print(type(obj1),type(obj2),type(obj3),type(obj4))
- 1
- 2
- 3
- 4
- 5
结果为:
持续更新。
推荐阅读