zoukankan      html  css  js  c++  java
  • 类与对象

    一:类

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

    2、在现实世界:

      一定先有对象,后来随着人类文明的发展总结出来的类对象是具体存在的,而类只是一种抽象概念

    3、在程序中,务必保证:先定义类,后调用类来产生对象

    现实生活中的对象:

      对象1:
    
        特征:
          school='oldboy'
          name='马冬梅'
          age=18
          sex=‘female’
        技能:
          学习
          选课
      对象2:
    
        特征:
          school=‘oldboy‘
          name=’ryan‘
          age=18
          sex=‘male'
        技能:
          学习
          选课

    程序中的类

    class oldboy:
         #用变量表示特征       
        school=‘oldboy’
        def __init__(self, name,age,sex):
            self.name=name
            self.age=age
            self.sex=sex
           #用函数表示技能
            def learn(self):
                pring('is learning'def  choose(self):
                print('choose course')
    #在程序中,必须先定义lei--------》调用---------》对象

    调用:

     stu1=OldboyStudent('马冬梅',18,’female‘)
    # stu1.NAME='马冬梅'
    # stu1.AGE=18
    # stu1.SEX="female"
    #
    stu2=OldboyStudent(’ryan‘,18,’male‘)
    # stu2.NAME='ryan'
    # stu2.AGE=18
    # stu2.SEX="male"
    print(stu1.name,stu1.school)
    print(stu2.name,stu2.school)

    调用发生哪些事情:

    1、首先会产生一个空对象stu1

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

    3、然后将空对象stu1连同调用类时括号内的参数组成(stu1,‘马冬梅’,18,‘female’)

    二:对象的使用

    school=‘xxxxxxxxxxxx’
    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))

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

    stu1=OldboyStudent('李三胖',18,‘male’)

    # OldboyStudent.country='CHINA'
    # print(OldboyStudent.country)
    
    # print(OldboyStudent.__dict__)
    # print(stu1.__dict__)
    # print(stu1.__dict__['name'])
    # print(stu1.name)
    # print(stu1.school)
    # print(school)
    
    stu2=OldboyStudent('王大炮',28,'male')
    # print(stu2.__dict__)
    
    
    
    # 类内部定义的变量是给所有对象共享,所有对象指向的都是同一个内存地址
    # print(id(stu1.school))
    # print(id(stu2.school))
    # print(id(OldboyStudent.school))
    
    # 类内部定义的函数,类可以使用,但类来用的时候就是一个普通函数,普通函数有几个参就传几个参数
    # print(OldboyStudent.learn)
    # OldboyStudent.learn(123)
    
    # 类内部定义的函数,其实是给对象使用的,而且是绑定给对象用,绑定给不同的对象就是不同的绑定方法
    # print(stu1.learn)
    # print(stu2.learn)
    # 绑定方法的特殊之处在于,谁来调用,就会将谁当作第一个参数自动传入
    
    # stu1.learn() # OldboyStudent.learn(stu1)
    # stu2.learn() # OldboyStudent.learn(stu2)
    
    
    
    # stu1.choose('python')
    # stu2.choose('linux')
  • 相关阅读:
    [LeetCode] Duplicate Emails 重复的邮箱
    [LeetCode] Flatten Nested List Iterator 压平嵌套链表迭代器
    [CareerCup] 15.4 Types of Join 各种交
    [LeetCode] Employees Earning More Than Their Managers 员工挣得比经理多
    [LeetCode] Consecutive Numbers 连续的数字
    [LeetCode] Rank Scores 分数排行
    [CareerCup] 15.3 Renting Apartment III 租房之三
    [CareerCup] 15.2 Renting Apartment II 租房之二
    [LeetCode] 340. Longest Substring with At Most K Distinct Characters 最多有K个不同字符的最长子串
    [CareerCup] 15.1 Renting Apartment 租房
  • 原文地址:https://www.cnblogs.com/wuchenyu/p/8795888.html
Copyright © 2011-2022 走看看