zoukankan      html  css  js  c++  java
  • python基础之面向对象编程

    python基础之面向对象编程

    1:面向过程编程

    面向过程编程就是把一件事,按照步骤一步一步的完成,最后这件事给完成了。但是如果中途有那一个步骤没完成,那这个事就没有完成。(一环扣一环)
    如果后期那一段代码需要修改,牵一发而动全身,所以引出了面向对象编程
    

    1:什么是对象?

    对象就是男(女)朋友?这个可不是程序中的对象。对象就是是数据和功能的整体包装。
    

    2:为什么要有对象?

    面向过程编程是把复杂问题简单化,但是扩展性不好,所以吗就引出了面向对象编程,解耦合强,扩展性好
    

    3:如何使用对象?

    使用对象就是使用类
    

    4:什么是类?

    类是对象与对象之间的相同的数据与功能的集合体
    

    5:如何使用类?

    一:定义
    # 使用类必须先定义它
    class 类名(): # 类名使用驼峰命名,括号可要也行,不可要也行
        pass     # 数据和功能
    
    # 在程序执行时:申请内存空间,把对象相同的数据和功能存起来,同时也会执行类
    
    二:初始版本
    class  Students:
        # 学生对象相同的数据
        school = '东京校区'
        
        # 学生对象相同的功能
        def choose_course(self):
            print("正在选课")
    	print("正在化妆》》》》》》》》")
    
    print(Students.__dict__)
    
    # 通过调用类来产生对象:也称实例化了一个对象
    # 调用的本质是与类空间产生关联
    s1 = Students()
    s2 = Students()
    s3 = Students()
    
    print(s1.__dict__)
    print(s2.__dict__)
    print(s3.__dict__)
    
    s1.name = "Alan"
    s1.age = 18
    s1.gender = "male"
    
    s2.name = "Kela"
    s2.age = 39
    s2.gender = "female"
    
    s3.name = "Red"
    s3.age = 28
    s3.gender = "male"
    
    print(s1.__dict__)
    print(s2.__dict__)
    print(s3.__dict__)
    
    三:优化
    
    
    优化
    
    class Student:
        school = "东京校区"
    
        def func(self):
            print('学生相同的功能')
    
    s1 = Student()
    s2 = Student()
    s3 = Student()
    
    def init(self,x,y,z):
        self.name = x
        self.age = y
        self.gender = z
    
    init(s1,"Alan",18,"male")
    init(s2,"Kela",39,"female")
    init(s3,"Red",28,"male")
    
    print(stu1.__dict__)
    print(stu2.__dict__)
    print(stu3.__dict__)
    
    
    四:精华版
    
    class Students:
        school = '东京校区'
        def __init__(self,name, age, sex):
            self.name = name
            self.age = age
            self.sex = sex
    
    
        def func(self):
            print("学生的功能")
          
    s1 = Students('Alan', 18, 'male')
    s2 = Students('Kela', 39, 'female')
    s3 = Students('Red', 28, 'male')
    print(s1.__dict__)
    print(s2.__dict__)
    print(s3.__dict__)
    wanings1:self这个是形参而已,可以取任何名字。为什么实例化的时候没有传参了,其实是python内部帮我传参了,而且参数是你要实例化的名字,所以就取名为self
    warnings2:
    	1:调用类,会创建一个对象空间,同时对象空间与类空间有建立了关系
        2:会触发类内__init__()这个方法
        3:返回一个初始化后的对象,可以赋值给变量名
    

    6:属性操作

    一:类属性操作

    class Students:
        school = '东京校区' # 这个也称为公有属性
        def __init__(self,name, age, sex):
            self.name = name
            self.age = age
            self.sex = sex
    		# 这里还可以加好多坨代码,但是必须要返回None的值
    
        def func(self):
            print("学生的功能")
    print(Studnets.school)
    print(Students.name) # 这个属性无法访问,这个是具体实例化对象的属性
    print(Students.func('a')) # 这个是要自己传参的,因为只有实例化的时候,内部可以帮忙带传,如果是类调用方法的话,这个函数有几个参数就需要传几个参数
    print(Students.__init__('aa','bb',18,'male'))
    

    二:对象属性操作

    class Students:
        school = '东京校区'
        def __init__(self,name, age, sex):
            self.name = name
            self.age = age
            self.sex = sex
    
    
        def func(self):
            print("学生的功能")
          
    s1 = Students('Alan', 18, 'male')
    s2 = Students('Kela', 39, 'female')
    s3 = Students('Red', 28, 'male')
    print(s1.__dict__)
    print(s1.name)
    print(s1.school)
    s1.school='千代田校区'
    print(s1.name)
    print(Students.school)
    s1.func() # 这个不需要参数,这个是因为,在实例化对象的时候,内部代传的参数
    
  • 相关阅读:
    c#格林治时间实现
    K3WISE常用表
    读取单元格数据
    水晶报表使用方法
    vs2010下使用sqlite
    C#执行EXE程序
    SQLLITE HELPER
    SQL LITE安装
    C#多线程
    VS2012 快捷键
  • 原文地址:https://www.cnblogs.com/wait59/p/13197677.html
Copyright © 2011-2022 走看看