WHCSRL 技术网

自学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

结果为:
在这里插入图片描述

持续更新。

文章知识点与官方知识档案匹配,可进一步学习相关知识
Python技能树高级教程30351 人正在系统学习中
推荐阅读