面向对象

面相对象

昨天介绍了什么是对象和类

对象就是特征和技能的结合体

类就是一系列相似对象的特征和技能的结合体

昨天我们只讲解了类的定义阶段 在定义阶段会立刻执行函数体内的代码,然后将产生的名字存放在类的名称空间

class OldboyStudent:
    school='Oldboy'
    def learn(self):
        print('learn...')

今天详细介绍了对象和类的调用阶段

对象的定义:

每个对象都有它相似的特征 也有它不一样的地方 如 名字 年龄等个人信息 怎样可以在类的调用阶段 区分出拥有一些相似特征和技能的对象  我们就要用到__init__方法具体如下

    def __init__(self,name,age):
        self.name=name
        self.age=age

 

class OldboyStudent:
    school='Oldboy'
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def learn(self):
        print('learn...')

调用类的时候触发执行

调用阶段会发生的三件事:

1.首先产生一个空对象

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

3.然后将产声的空对象连同括号内的参数一同传给___init__

class OldboyStudent:
    school='Oldboy'
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def learn(self):
        print('learn...')
ojb=OldboyStudent('egon',18)
print(ojb.name)

调用类--->产生对象,调用类的过程也称为类的实例化

类的数据属性:是给对象用的,而且直接共享给所有对象用,内存地址都一样

class OldboyStudent:
    school='Oldboy'
    x=1
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def learn(self):
        print('learn...')
ojb=OldboyStudent('egon',18)
print(id(ojb.x))
print(id(OldboyStudent.x))
1699114464
1699114464

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

class OldboyStudent:
    school='Oldboy'
    x=1
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def learn(self):
        print('learn...')
obj=OldboyStudent('egon',18)
obj1=OldboyStudent('alex',20)
print(obj)
print(obj1)
<__main__.OldboyStudent object at 0x000002290EBA8F60>
<__main__.OldboyStudent object at 0x000002290EBA8FD0>

绑定方法的特殊之处:

1.绑定给谁就应该谁来调用

2.谁来调用就会把谁当作第一参数传入

一切皆对象:在python3中统一了类型与类的概念,类即类型

class OldboyStudent:
    school='Oldboy'
    x=1
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def learn(self):
        print('learn...')
print(OldboyStudent)
l=[1,2,3]
print(type(l))
<class '__main__.OldboyStudent'>
<class 'list'>

 

posted @ 2018-04-11 17:09  谎~言  阅读(99)  评论(0编辑  收藏  举报