python中的类、类的属性、类的实例化、类属性应用、实例方法

本文部分内容参考《编程小白的第1本python入门书》,(侯爵著)一书。
python的OPP模型中的两种对象为:类对象和实例对象。类对象提供默认行为,是实例对象的工厂。实例对象是程序处理的实际对象:各自都有独立的命名空间,但是继承创建该实例的类中的变量名。类对象来自语句,而实例来自于调用。每次调用一个类,就会得到这个类的新的实例。
类是有一些共同特征和行为事物的抽象概念的总和。

>>> class CocaCola:
...     formula=['caffeine','sugar','water','soda']
...

如上例所示,我们使用class来定义一个类,如同使用def定义函数,装载着列表的变量formula(在类里面赋值的变量)就是类的变量,我们称之为类的属性(Class Atrribute).字符串、列表、字典、整数等变量都可以成为类的属性。

类的实例化:
我们的使用上面定义好的配方来生产可口可乐。当然,按照这个配方无论生产多少瓶可乐,它们的味道都是一样的。

>>> coke_for_me=CocaCola()
>>> coke_for_you=CocaCola()
>>> print(CocaCola.formula)
['caffeine', 'sugar', 'water', 'soda']
>>> print(coke_for_you.formula)
['caffeine', 'sugar', 'water', 'soda']
>>> print(coke_for_me.formula)
['caffeine', 'sugar', 'water', 'soda']

在左边我们创建一个变量,右边写上类的名称,这样看起来很像是赋值的行为,我们称之为类的实例化。被实例化后的对象,我们称之为实例(instance)即上面的coke_for_me、coke_for_you均为实例,或者说是类的实例。

类属性引用:
在类的名字后面输入 . ,IDE就会自动联想出我们之前定义类的时候写在里面的属性,这就是类属性的引用。

类的属性会被所有类的实例共享,所以当你在类的实例后面再点上 . ,索引用的属性值是完全一样的。
类的变量与正常的变量并无区别:

>>> for element in coke_for_you.formula:
...     print(element)
...
caffeine
sugar
water
soda

实例属性:

>>> class CocaCola:
...     formula=['caffeine','sugar','water','soda']
...
>>> coke_for_China=CocaCola()
>>> coke_for_China.local_logo="可口可乐" #创建实例属性,并进行赋值
>>> print(coke_for_China.local_logo) #打印实例属性引用结果
可口可乐

local_logo是实例coke_for_China的变量,实例的变量我们称之为实例属性。

实例方法:
类的实例可以引用属性,此外类的实例也可以使用方法。方法就是函数,方法是供实例使用的,故我们亦可以称其为实例方法实例方法。

>>> class CocaCola:
...     formula=['caffeine','sugar','water','soda']
...     def drink(self):
...             print('Energy!')
...
>>> coke=CocaCola()
>>> coke.drink()
Energy!

注意:参数self即为实例coke本身。
一旦一个类被实例化,其实我们可以使用和与我们使用函数相似的方式:

coke=CocaCola()
coke.drink()==CocaCola.drink(coke) #左右两边的写法完全一致

注意:被实例化的对象会被编译器默默地传入后面方法的括号中,作为第一个参数。

class CocaCola:
    formula = ['caffeine', 'sugar', 'water', 'soda']
    def drink(self, how_much):
        if how_much == 'a sip':
            print("cool!")
        elif how_much == 'whole bottle':
            print("Headache")
ice_coke=CocaCola()
ice_coke.drink("a sip") #drink()函数的第一个参数为ice_coke,第二个参数被赋值为"a sip"         

#程序运行结果:
cool!

如有错误,敬请批评指正!谢谢!

©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页