zoukankan      html  css  js  c++  java
  • 面向对象1


    一、面向对象
    1、类
    对象是特征与技能的结合体,那类就是一系列对象相同的特征与技能的结合体
    2、在现实世界中:一定先有对象,后来随着人类文明的发展总结出的类对象是具体存在的,而类只是一种抽象概念
    3、在程序中,务必保证:先定义类,后调用类来产生对象

    现实生活中的对象:
    对象1:
    特征:
    school="Oldboy"
    name="马冬梅"
    age=18
    sex="female"
    技能:
    学习
    选课

    对象2:
    特征:
    school="Oldboy"
    name="甜蜜蜜"
    age=21
    sex="male"
    技能:
    学习
    选课

    对象3:
    特征:
    school="Oldboy"
    name="原石开"
    age=22
    sex="male"
    技能:
    学习
    选课

    现实生活中的老男孩学生类:
    相同的特征
    school="Oldboy"
    相同的技能
    学习
    选课

    1、程序中的类
    class OldboyStudent:
    用变量表示特征
    school="Oldboy"

    stu1, "马冬梅", 18, 'female'
    def __init__(self,name,age,sex): #self=stu1 name= "马冬梅" age=18 sex="female"
    # print('==========init run=============>')
    self.name=name # stu1.name = "马冬梅"
    self.age=age # stu1.age = 18
    self.sex=sex # stu1.sex = "female"


    用函数表示技能
    def learn(self):
    print('is learning...',self)

    def choose(self):
    print('choose course...')

    在程序中:必须先定义类 - -----》调用类 - -----》对象

    stu1=OldboyStudent()
    stu1.NAME='马冬梅'
    stu1.AGE=18
    stu1.SEX="female"

    stu2=OldboyStudent()
    stu2.NAME='甜蜜蜜'
    stu2.AGE=21
    stu2.SEX="male"

    stu3=OldboyStudent()
    stu3.NAME='原石开'
    stu3.AGE=22
    stu3.SEX="male"

    print(stu1.NAME,stu1.school)
    print(stu2.NAME,stu2.school)
    print(stu3.NAME,stu3.school)
    上述产生的三个对象都一样了


    调用类发生哪些事:
    1、首先会产生一个空对象stu1
    2、会自动触发类内部的__init__函数
    3、然后将空对象stu1连同调用类时括号内的参数组成(stu1,"马冬梅",18,'female'),将这四个参数一起传给__init__函数

    stu1=OldboyStudent("马冬梅",18,'female') #OldboyStudent.__init__(stu1,"马冬梅",18,'female')
    stu2=OldboyStudent("甜蜜蜜",21,'male') #OldboyStudent.__init__(stu2,"甜蜜蜜",21,'male')
    stu3=OldboyStudent("原石开",22,'male')

    调用类---》产生类的对象,该对象也可以称为类的一个实例,调用类的过程也称为类的实例化
    stu1=OldboyStudent('李三胖',18,'male') #OldboyStudent.__init__(stu1,'李三胖',18,'male')

    OldboyStudent.country='CHINA'
    print(OldboyStudent.country)
    stu2=OldboyStudent('王大炮',28,'male')
    print(stu2.__dict__)

    类内部定义的变量是给所有对象共享,所有对象指向的都是同一个内存地址
    类内部定义的函数,类可以使用,但类来用的时候就是一个普通函数,普通函数有几个参就传几个参数
    类内部定义的函数,其实是给对象使用的,而且是绑定给对象用,绑定给不同的对象就是不同的绑定方法
    绑定方法的特殊之处在于,谁来调用,就会将谁当作第一个参数自动传入

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

    绑定方法的特殊之处:
    1、 绑定给谁就应该由谁来调用,
    2、谁来调用就会把谁当做第一个参数传入
    class People:
    x=1
    def __init__(self,name,age,sex):
    self.name=name
    self.age=age
    self.sex=sex

    def run(self): #self=obj
    print('%s is running' %self.name) #obj.name

    def f1():
    print('from f1')

    def f2(self):
    pass

    obj=People('egon',18,'male') #People.__init__(obj,'egon',18,'male')
    obj1=People('egon1',18,'male') #People.__init__(obj,'egon',18,'male')
    obj2=People('egon2',18,'male') #People.__init__(obj,'egon',18,'male')

    print(People.f1)
    People.f1()
    print(obj.f1)
    obj.f1() #People.f1(obj)


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


  • 相关阅读:
    简单的排列问题的总结
    php学习
    入门shader,并实现normal mapping on earth
    github 操作查阅 创建仓库 代码更新
    Debian WSL desktop install on windows 10
    使用python三元运算if else
    搜索引擎语法整理
    个人小程序学习笔记,会持续学习并更新!
    Windows Form父子两个窗体之间的传值测试
    Asp.netCore 3.0 Web 实现Oauth2.0微信授权登陆的测试
  • 原文地址:https://www.cnblogs.com/zhaodafa/p/8795629.html
Copyright © 2011-2022 走看看