python之路--day19-对象

1,调用类发生了那些事?(实例化)

  1,首先产生一个空对象

  2,然后自动触发类内部的__init__函数

  3,最后将空对象连同调用类时括号内的参数一起传给__init__函数,为对象定制独有属性

    注意:定义类里面的函数时,这些函数本质上都是为了给对象使用的,函数默认的self参数,就是用来接收对象本身的。

  

class OldboyStudent:
    school='oldboy'

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

    #self=stu1
    def learn(self):
        print('%s is learning' %self.name)

    def choose(self,course):
        print('%s is choosing %s' %(self.name,course))
定义类

2,调用类时,会产生类的对象,这个对象也称为类的一个实例,调用类的过程也称为类的实例化

stu1=OldboyStudent('李三胖',18,'male') #OldboyStudent.__init__(stu1,'李三胖',18,'male')

3,类内部定义的变量是给所有的对象共享的,所有对象调用的类内部变量都是指向的同一个内存地址

# print(id(stu1.school))
# print(id(stu2.school))
# print(id(OldboyStudent.school))

4,类内部定义的函数,类可以使用,但类来用的时候就是一个普通函数,普通函数有几个参数就需要传几个参数

# print(OldboyStudent.learn)
# OldboyStudent.learn(123)

5,类内部定义的函数,其实是给对象使用的,而且是绑定给对象用,绑定给不同的对象就是不同的绑定方法

# print(stu1.learn)
# print(stu2.learn)

 绑定方法的特殊之处在于,谁来调用,就会将谁当做第一个参数自动传入

# stu1.learn() # OldboyStudent.learn(stu1)
# stu2.learn() # OldboyStudent.learn(stu2)

对象属性的操作

  obj . 属性名 =  用来修改或者添加 对象属性

  obj . 属性名  查看对象属性

  del 属性名  删除属性

  对象属性的查找顺序:先找对象自己的名称空间----再找类的名称空间

一起皆对象:在python3中统一了类和类型的概念,类就是类型

原文地址:https://www.cnblogs.com/guodengjian/p/8798255.html