【Python】浅析python中的类(第一章)

【Python】浅析python中的类(第一章)

浅析python中的类

面向对象最重要的概念就是类(Class)和实例(Instance)
面向对象的设计思想是从自然界中来的,因为在自然界中,(Class)
实例(Instance)的概念是很自然的。Class 是一种抽象概念,比如我
们定义的 Class——Student,是指学生这个概念,而实例(Instance)则
是一个个具体的 Student,比如,Bart Simpson 和 Lisa Simpson 是两个具
体的 Student。


所以,面向对象的设计思想是抽象出 Class,根据 Class 创建 Instance。
面向对象的抽象程度又比函数要高,因为一个 Class 既包含数据,又包
含操作数据的方法。

关于类

类与类的属性

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

使用class来定义一个类,formula为一个装载着列表的变量
在类里面赋值的变量就是类的变量,而类的变量又叫类的属性(Class Atrribute)

类的实例化

coke_a = CocaCola()
coke_b = CocaCola()
------------------------
print (CocaCola.formula)
print (coke_a.formula)
print (coke_b.formula)

我们在左边创建一个变量,在右边指定类的名称(类似于赋值),这就叫类的实例化。实例化后的对象称为实例(instance)

类属性的引用

  • 在类的名字后面输入' . ' ,IDE会自动联想出我们之前在定义类的时候卸载里面的属性,这便是类属性的引用(attribute references)
  • 类的属性会被所有类的实例共享,所以当你在类的实例后面再加上' . ',索引用的属性值是完全一样的。
print (CocaCola.formula)

print (coke_a.formula)

print (coke_b.formula)
------------------------------------
输出结果:
>>> ['caffeine','sugar','water','soda']
>>> ['caffeine','sugar','water','soda']
>>> ['caffeine','sugar','water','soda']

实例属性


class CocaCola:
formula = ['caffeine','sugar','water','soda']
coke_a = CocaCola()
coke_a.local_logo = '可口可乐'    #创建新的实例属性
print (coke_a.local_logo)    #打印实例属性引用结果

实例方法


说明

类的实例可以使用方法。方法就是函数,但是我们把这个函数称之为方法(Method),由于方法是供实例使用的。因此,我们还可以称之为实例方法(Instance Method)

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

关于 self


注意以下代码中原本self的位置变为了test

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

实例的使用与使用函数相似

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

==按照Python的规矩,我们还是统一使用self==

更多的参数

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!')
coke = CocaCola()
coke.drink('a sip')

魔术方法

python中的一些方法被称之为“魔术方法”,_init_()就是其中之一。

  • _init_()是initialize(初始化)的缩写
  • 如果你在类里定义了它,那么当你在创建实例的时候它能帮你自动地处理一些事情。比如,新增实例属性等。
class CocaCola():
    formula = ['caffeine','sugar','water','soda']
    def __init__(self):
        self.local_logo = '可口可乐'
    def drink(self):
        print ('Engergy!')

coke = CocaCola()
print (coke.local_logo)
  • 再来一段代码展示其灵活性
class CocaCola():
    formula = ['caffeine','sugar','water','soda']
    def __init__(self):
        for element in self.formula:
            print ('Coke has {}!'.format(element))
    def drink(self):
        print ('Engergy!')

coke = CocaCola()
----------------------------------
output:

Coke has caffeine!
Coke has sugar!
Coke has water!
Coke has soda!
weinxin
我的微信
有问题微信找我
DannyWu

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: