Python学习(类的属性、继承、覆盖等详解)

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

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值