• 面向对象


    动作和属性的集合叫做对象。

    现实世界中一切皆对象。

    类:把一类事物的相同的属性和动作整合到一起就是类。类是一个抽象的概念。

    对象:就是基于类而创建的一个具体的事物(具体存在的),对象也是特征和动作整合到一起的。

    学校类:

    特征:name.addr,type

    动作:考试,招生,招老师,开除学生

    python当中可以用面向对象编程,也可以面像过程和面向函数编程。

    类和对象

    申明一个类的语法结构:

    class 类名:

    创建类的对象语法:

    类名()

    类有自己的内置属性,类名.属性

    内存地址加()可以运行函数。

    类的属性都是放在一个字典当中,类名.属性其实就是从属性字典中获取键值。

    class china:
    name="zhang"
    def fun(self):
    print("你好张亚萍")
    print(china.__dict__)
    print(china.__dict__["name"])


    print(china.__dict__)
    print(china.__dict__["name"])
    上面两句合起来的意思就是下面一句话的意思。也就是下面一句话的本质是上面的两句话。
    print(china.name)

    所有的类都是object类的子类。

    类和函数是不一样的,尤其是创建对象传参的过程不一样。

    实例是执行init函数产生的,所以只有数据属性,没有函数属性。

    创建一个实例就是执行一次init方法。

    函数属性属于类。

    self就是实例化对象自己。

    凡是类中定义的函数第一个参数都为self,在实例化的时候对象可以调用,python默认会将实例化对象传给self。所以这个参数可以不写,python默认传递。

    类属性的删除使用del.

    类调用的时候不会自动传递self,需要将实例自己传进去。

    class  chinese:
        dang="社会"
        def __init__(self,name,age,gender):
            self.mingzi=name
            self.nianling=age
            self.xingbie=gender
        def bad(self):
             print("%s有不好的习惯,随地吐痰"%(self.mingzi))
    z=chinese("小明",18,"男的")
    t=z.bad()
    print(t)
    #查看类a数据属性dang:
    print(chinese.dang)
    #修改类数据属性dang
    chinese.dang="中华人民共和国"
    print(chinese.dang)
    #删除类数据属性dang
    del chinese.dang
    print(chinese.__dict__)
    #增加类函数属性
    def good(self,food):
        print("%s很好吃"%food)
    chinese.better=good
    chinese.better(chinese,"土豆")
    #删除类函数属性
    del chinese.bad
    print(chinese.__dict__)
    #修改类函数属性
    def  p(self,jiamen):
        print("%s我是修改后的函数"%jiamen)
    chinese.better=p
    print(chinese.better(chinese,"开心"))
    class  chinese:
        dang="社会"
        def __init__(self,name,age,gender):
            self.mingzi=name
            self.nianling=age
            self.xingbie=gender
        def bad(self):
             print("%s有不好的习惯,随地吐痰"%(self.mingzi))
    z=chinese("小明",18,"男的")
    #查看实例属性
    print(z.mingzi)
    z.bad()
    #增加实例属性
    z.hobby="篮球"
    print(z.__dict__)
    print(z.hobby)
    #修改实例属性
    z.age=10
    print(z.age)
    #删除实例属性
    del z.hobby
    print(z.__dict__)
    class  chinese:
        dang="社会"
        def __init__(self,name,age,gender):
            self.mingzi=name
            self.nianling=age
            self.xingbie=gender
        def bad(self):
             print("%s有不好的习惯,随地吐痰"%(self.mingzi))
    z=chinese("小明",18,"男的")
    z.dang="日本"
    print(z.dang)#相当于给自己怎加了一个属性日本,运行结果为日本
    print(chinese.dang)#任然是类属性,运行结果为社会

    只有使用.进行访问的遵循在类中查找。如下可以证明;

    dang = "社会"
    class  chinese:
        def __init__(self,name,age,gender):
            self.mingzi=name
            self.nianling=age
            self.xingbie=gender
        def bad(self):
             print("%s有不好的习惯,随地吐痰"%(self.mingzi))
    z=chinese("小明",18,"男的")
    print(z.dang)
     
    函数运行结果为AttributeError: 'chinese' object has no attribute 'dang'
    dang = "社会"
    class  chinese:
        def __init__(self,name,age,gender):
            print("-----",dang)
            self.mingzi=name
            self.nianling=age
            self.xingbie=gender
        def bad(self):
             print("%s有不好的习惯,随地吐痰"%(self.mingzi))
    z=chinese("小明",18,"男的")
    
    
    函数的运行结果为----- 社会
        def __init__(self,name,age,gender):
    
           print("--------->:",dang)
           self.mingzi=name
           self.nianling=age
           self.xingbie=gender
        def bad(self):
             print("%s有不好的习惯,随地吐痰"%(self.mingzi))
    z=chinese("小明",18,"男的")
    
    
    
    程序运行结果为--------->: ,因为只有使用.调用的才遵循字典原则,没有点则视为普通变量。
    只要使用.调用就只能在类中
    class  chinese:
        dang = "中国"
        l=["z","n"]
        def __init__(self,name,age,gender):
           dang = "中国"
           print("--------->:",dang)
           self.mingzi=name
           self.nianling=age
           self.xingbie=gender
        def bad(self):
             print("%s有不好的习惯,随地吐痰"%(self.mingzi))
    z=chinese("小明",18,"男的")
    #z.l=["1","2"]#这是给实例对象增加了一个属性
    z.l.append("cc")#这是将类的数据属性进行改变,注意等号=和append等方法的不同。
    print(z.l)
    进行查找,
  • 相关阅读:
    如何面试程序员?
    开始做项目
    ===
    依赖注入获得一个对象却想返回不同的值(Error)
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]ResultSet can not reread row data for column 4.
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Object has been closed.
    .net 4.5新特性
    有限状态机简单示例
    JavaScript入门经典(第四版)文摘
    小强升职记读后感
  • 原文地址:https://www.cnblogs.com/zypfzw/p/9126220.html
Copyright © 2020-2023  润新知