面向对象基础

面向对象基础

一:类

对象是属性(特征),与技能的结合体,而类就是一系列对象的属性和技能的结合。

如何定义类

先定义类,后调用类创造对象。

定义的语法

class 类名:
对象相同的属性(特征)
对象相同的技能

class:用于定义类,class后跟的是类名

类名:

类的名字用来调用创造对象

注意:

类名必须要遵循驼峰命名法,python在定义变量时不推荐使用,但在定义类时推荐使用

在定义类发生的事情:

1.类在定义时,会产生一个空的名称空间

2.会把类内的所有名字,扔进名称空间

注意:

类在定义阶段就已经产生好了名称空间,执行python文件时会执行类内部的代码

再定义阶段,类内部的

调用类发送的事情

  1. 首先会产生一个空的对象,就是产生”对象的名称空间”
  2. 会自动触发__init__
  3. 会把对象本身及括号内的参数一并传给__init__函数

总结:

调用类会产生一个对象,调用类的过程叫做类的实例化,产生的对象称之为类的一个实例.

# 学生类
class OldboyStudent:
    # 若__init__中有self以外的参数,调用类时必须在括号内传入参数。
    def __init__(self, name, age, sex):  # self --> 就是对象本身  x = 高峰峰  y=93   z=female
        # print(self, name, age, sex)
        # print('此处时__init__。。。。')
        # 给对象添加特征的方式二:
        self.name = name
        self.age = age
        self.sex = sex

    # 特征
    school = 'oldboy'
    # print('tank is handsome...')

    # 技能
    def learn(self):
        print('learn python...')

    def choose_course(self):  # self = None
        print('choose_course ....')


stu1 = OldboyStudent('高峰峰', 93, 'female')  # OldboyStudent()---> 学生对象
stu2 = OldboyStudent('小丁丁', 84, 'female')  # OldboyStudent()---> 学生对象
stu3 = OldboyStudent('大丁丁', 18, 'male')  # OldboyStudent()---> 学生对象


# 给对象添加属性的方式一:
# print(stu1.name)
# stu1.name = '高峰峰'
# stu1.age = 93
# stu1.sex = 'female'
# print(stu1.name, stu1.age, stu1.sex)


print(stu1.name, stu1.school)

二:对象

对象是属性(特征),与技能的结合体

产生对象语法:

类名+()调用类产生对象。

名称空间的产生:

  1. 类的名称空间在定义阶段就已经产生
  2. 对象名称空间,在调用类时产生

__init__:

在内部定义__init__函数

__init__:会在调用类时,自动触发该函数

查看类的名称空间

print(类名.__dict__)

查看对象的名称空间

print(对象.__dict__)

三:对象与类的查找顺序

对象:先从对象本身中找,如果有则优先查找对象自己,若没有,则去类中找,若没有则报错

类:从类中找,若没有则报错,不会到对象中查找

四:对象绑定方法的特殊之处

类内部的函数主要是给对象用

  1. 由类来调用类的内部函数,该函数只是一个普通的函数,需要接收几个参数就得传入几个参数
    1. 由对象来调用称之为对象的绑定方法,不同的对象调用该绑定方法,则会将不同的对象传入该绑定方法中
posted @ 2019-10-09 15:50  鸿鸿1  阅读(134)  评论(0编辑  收藏  举报