22-面向对象编程【进阶】

1、面向对象编程:

对象指:特征与技能的结合体

面向对象编程的优点:可扩展性强

                        缺点:难度>面向过程

2、类的定义:  【先定义类后调用类来产生对象

对象是特征与技能的结合体,则类就是一系列对象相同的特征与技能的结合体。   

【用变量表示特征,用函数表示技能】   

类=变量+函数

注:(1)类名的定义,通常使用驼峰的方法    class MyLogin():pass

      (2)在定义类的阶段会立刻执行类体内的代码,然后将产生的名字存放于类名空间中   【重要】

类的属性=变量属性+函数属性    

调用方法:类名.属性

class MyInfo():
    name='psy'
    def love(self):
        print('love you')
        return ''
    print('===>')  #就算不调用类,根据2、(2)可知:屏幕也会显示这个'===>'
my=MyInfo()  #实例化一个对象
print(my.name)
print(my.love())

结果显示:

===>
psy
love you

3、类中一般自带__init__(self)   【初始化

class Stu():
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex
    def choose(self):
        print('{} is choosing things'.format(self.name))
stu1=Stu('psy',18,'female')
stu1.choose()  #psy is choosing things

调用类会发生3件事:   【基于上述例子

(1)首先产生一个空对象stu1

(2)会自动触发类内部的__init__函数

(3)然后将空对象stu1连同调用类时括号内的参数组成(stu1,'psy',18,'female'),将这四个参数一起传给__init__函数   

      【相当于Stu.__init__(stu1,'psy',18,'female')】

调用类===》产生类的对象,该对象也称为类的一个实例,调用类的过程也称为类的实例化

So  调用类的过程==等价==类的实例化

实例化的结果就是一个对象,或称为一个实例。

4、对象和类的再介绍    【结合例子】

class Stu():
    x=1
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex
    def choose(self):
        print('{} is choosing things'.format(self.name))
obj=Stu('psy',18,'female')   #等价于Stu.__init__(obj,'psy',18,'female')

4-1)产生的对象的名称空间怎么查看?   obj.__dict__

print(obj.__dict__)   #{'name': 'psy', 'sex': 'female', 'age': 18}

4-2)对象的操作

print(obj.name)  #查看对象属性
obj.education='Major'  #增加对象属性
del obj.sex   #删除属性
obj.age=24  #修改对象属性
print(obj.__dict__)  #{'age': 24, 'education': 'Major', 'name': 'psy'}

4-3)对象属性的查找顺序:先找对象自己的命名空间===》类的命名空间

(1)类的数据属性:是给对象用的,且直接贡献给所有对象使用,内存地址一样

(2)类的函数属性:也是给对象用的,但是绑定给对象用的,绑定到不同的对象就是不同的绑定方法,内存地址也不相同,但是其实都是指向同一个功能!

print(Stu.choose)  #<function Stu.choose at 0x00000232F1738510>
#Stu.choose()  #报错: choose() missing 1 required positional argument: 'self'
Stu.choose(obj)  #psy is choosing things

4-4)绑定方法的特殊之处   【针对4-3)(2)】  类内部定义的函数,类可以使用,但实际上是给对象使用

(1)绑定给谁就该由谁来调用

(2)谁来绑定就把谁当做第一个参数传入

转载于:https://my.oschina.net/pansy0425/blog/3027730

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值