0
点赞
收藏
分享

微信扫一扫

python浅浅盘一盘“类”

得一道人 2022-02-12 阅读 71

最初学习的编程语言是C,后来接触了C++,但是C++的特色就是类,当时学得朦朦胧胧,再后来接触python,学习python类的时候感觉似曾相识,与C++异曲同工,今天就好好整理一下。

1. 术语预览

  1. 类的属性(Class Atrribute)
  2. 实例(instance)
  3. 访问类属性(attribute references)
  4. 方法(Method)/实例方法(Instance Method)
  5. self参数(就是被创建的实例本身)
  6. “魔法方法”(是方法,不过会魔法,莫名的产生,如__inti__()等。

2. 例子与分析

python3.8

class CocaCola:
    """
    一个可口可乐类,初始化时被贴上中文标签
    可口可乐可以被买
    被喝
    """
    formula = ['caffeine', 'sugar', 'water', 'soda']  # formula称为类的属性(Class Atrribute)

    def __init__(self, logo_name):  # __init__(self)称为魔法方法
        self.local_logo = logo_name  # self.local_logo称为类的属性(Class Atrribute)

    def buy(self, money):  # def buy(self, money)称为方法(Method)或实例方法(Instance Method),供实例使用
        print('Cost {} yuan.'.format(money))
        # print('Cost ' + str(money) + ' yuan')  # 同样效果

    def drink(self,how_much):  # def drink(self,how_much)称为方法
        if how_much == 'a sip':
            print(self.local_logo + ' Cool~')
        elif how_much == 'whole bottle':
            print(self.local_logo + ' Headache!')


ice_coke = CocaCola('可口可乐')  # 创建一个冰可乐的实例
print(ice_coke.formula)  # ['caffeine', 'sugar', 'water', 'soda']  # 访问属性
ice_coke.buy(3.5)  # Cost 3.5 yuan.
ice_coke.drink('a sip')  # 可口可乐Cool~

ice_coke2 = CocaCola('CocaCola')  # 可口可乐 Cool~
ice_coke2.drink('whole bottle')  # CocaCola Headache!

这里举了一个可口可乐的例子,我们对于可口可乐的常识,可口可乐有相应的配方,同时可口可乐可以被买被喝。

  1. 什么是属性,魔方方法和实例方法
    我理解的属性是一种形容词,可以描述类的特征,比如你向别人介绍你时,你可以说你的身高体重,身高体重就是人这一类的属性。
    在此例中formulaself.local_logo都为属性,只是self.local_logo多了一个self,以self为前缀的变量都可供类中的所有方法使用。
    魔法方法为事先定义好的方法,在创建删除类时能够被自动调用的方法,最大的特征就是开头和末尾各有两个下划线,如def __init__(self, logo_name):
    实例方法为类的一些动作。
  2. 怎样创建实例、访问属性和调用方法
    创建实例ice_coke = CocaCola('可口可乐'),需要注意的是其传入的参数要根据__init__(self, logo_name)方法的形式而定。
    访问属性ice_coke.formula句点表示法在Python中很常用,这种语法演示了Python如何获悉属性的值。
    实例方法:ice_coke.buy(3.5)ice_coke.drink('a sip')
  3. 创建多个实例
    ice_coke2 = CocaCola('CocaCola')

参考资料

《编程小白的第一本python入门书》
《Python编程 从入门到实践》Eric Matthes

举报

相关推荐

0 条评论