• (8)python 类和对象


    一、类和对象

    python可以动态的添加删除变量和方法

    类中的方法至少要有一个参数,第一个参数会被绑定到类的实例上,通常命名为self

    1.构造函数

    类中的构造方法名为 __init__(self,...,...),如果类没有定义构造方法,则会自动包含一个只有self的构造方法

    class Person:
        '这是一个Person类'
        def __init__(self,name='tom',age=10):
            print('创建一个Person类')
            self.name=name
            self.age=age
        def say(self,content):
            print(content)

    python一个类只有一个构造函数。不向java  net 可以重载多个构造函数

    2.创建对象

    调用构造方法创建类的对象,不需要使用new关键字

    p=Person()#打印创建一个Person类

    调用

    p.name
    p.say('你好')

    赋值

    p.name='lilei'

    3.动态操作对象

    动态添加变量

    p.skills=['Singing','Swimming']

    动态删除变量

    del p.name

    动态创建方法

    动态创建方法是,不会自动绑定到第一个参数,所以调用方法时,需要手动绑定

    def hi(self):
        print("say hello")
    
    p.hello=hi
    p.hello(p)

    如果想要动态的方法能自动绑定需要用到types模块下的MetodType

    4.self

    类中使用一个方法调用另一个方法

    class Dog:
        def jump(self):
            print('jump')
        def run(self):
            self.jump()
            print('run')
    p=Dog()
    p.run()

    二、方法

    1.方法调用

    def a():
        print('全局的a方法')
    class Dog():
        def a():
            print('Dog下的a方法')
        def b(self):
            print( self ,'Dog下的b方法')
    
    a()#使用全局方法
    Dog.a()#使用位绑定的类方法
    ########
    dog=Dog()
    dog.b()#使用位绑定的类方法
    Dog.b(dog)#使用位绑定的类方法
    Dog.b('dog')#使用位绑定的类方法,实例名可以不是Dog类,任意字符串即可

    打印

    2.类方法和静态方法

     类方法和静态方法可以直接调用函数,区别是类方法会自动绑定

    class Dog():
        @classmethod
        def a(self):
            print('Dog下的a方法')
        @staticmethod
        def b(self):
            print( self ,'Dog下的b方法')
            
    Dog.a()
    Dog.b('dog')

    3.函数修饰器@

     三、成员变量

    1.类变量和实例变量

    在类中没有操作实例变量时,得出的结果都是相同的

    class Student:
        age=8
        name='tom'
    
    Student.name#类变量 打印tom
     stu=Student() stu.name#实例变量 打印tom、

    如果在构造函数创建实例后,类变量和实例变量会变成两个不一样的变量

    class Student:
        age=8
        name='tom'
        def s(self,age,name):
            #新创建的两个实例变量
            self.age=age
            self.name=name
    stu=Student()
    stu.s(10,'jack')
    
    print(Student.name)#打印 tom
    print(stu.name)#打印 jack

    2.用property函数定义属性

    四、封装

    双下划线

    五、继承

    1.继承

    定义类时使用(父类1,父类2,...)表示继承,python允许多继承

    class Fruit:
        def fruit(self):
            print('水果类')
    
    class Food:
        def food(self):
            print('食物类')
    
    class Apple(Fruit,Food):#继承水果和食物类
        def apple(self):
            print('苹果类')
    
    a=Apple()
    a.apple()
    a.fruit()
    a.food()

    2.重写父类方法

    class Apple(Fruit,Food):
        def fruit(self):
            print('苹果类')

    3.

    六、动态性

    python是动态语言,可以动态增加删除

    七、多态

    由于python是弱语言天生带有多态性

    八、枚举

     

     

  • 相关阅读:
    IP地址分类(A类 B类 C类 D类 E类)
    操作系统实六(页面置换算法之LRU)
    操作系统实验五(内存管理之动态分区分配(首次适应))
    操作系统实验四(内存管理之固定分区分配)
    CRT连接虚拟机中的linux系统(ubuntu)
    3种拨打电话的方式
    深度:ARC会导致的内存泄露
    iOS7.1Https企业证书发布方法
    iOS开发学习路线图
    iOS实例下载:使用腾讯的SDK将新浪微薄嵌入到应用中
  • 原文地址:https://www.cnblogs.com/buchizaodian/p/6920514.html
Copyright © 2020-2023  润新知