zoukankan      html  css  js  c++  java
  • python 包与类

    self方法

    1、调用__new__方法,用来申请内存空间
    2、调用__init方法向内存空间传入参数,将self指向创建好的内存空间,填充数据
    3、将结果赋给变量,变量值也指向创建好的内存空间

    class Student(object):
        def __init__(self,x,y):
            self.name = x
            self.age = y
    
    s1 = Student('siri', 18)
    print(s1)
    

    输出:<main.Student object at 0x10c1c2910> 内存空间地址

    class Student(object):
        def __init__(self,x,y):
            self.name = x
            self.age = y
    
    s1 = Student('siri', 18)
    print(s1.name)
    

    输出:siri
    4、新建的变量会新增加一个内存空间,每个变量指向不同的变量空间
    5、类中的函数不会随变量的增加多创建,而是通过self去调用函数

    class Student(object):
        def __init__(self,x,y):
            self.name = x
            self.age = y
        def say_hello(self):
            print('大家好,我是', self.name,self.age)
    
    s1 = Student('siri', 18)
    print(s1.say_hello())
    

    输出:大家好,我是 siri 18

    slots方法

    6、增加动态属性,使用等号

    # 如果属性不存在,会给对象增加一个新的属性
    # 给s1增加一个新的属性
    s1.city = '上海'
    print(s1.say_hello())
    print(s1.city)
    

    输出: 上海
    7、固定不允许增加动态属性

    # 直接定义在类里,是一个元祖,用来规定可以存在的属性
    class Student(object):
        __slots__ = ('name','age','city')
    
        def __init__(self,x,y):
            self.name = x
            self.age = y
        def say_hello(self):
            print('大家好,我是', self.name,self.age)
    
    s1 = Student('siri', 18)
    # 增加动态属性
    s1.city = '上海'
    print(s1.say_hello())
    print(s1.city)
    

    __init__魔术(魔法)方法

    1、不需要手动调用,会在合适的时候自动调用,只要创建了就会自动调用init方法
    2、这些方法都是使用__开始,__结束
    3、方法名都是系统设置好,会自动调用
    4、销毁调用,当对象被销毁时,待整个程序走完会自动调用

        def __del__(self):
            print('结束')
    

    5、手动调用

    del 变量名
    

    repr 和__str__

    当打印一个对象时,会调用这个对象的
    当两个都写时,会自动调str方法

    class Student(object):
    
        def __init__(self, name, age):
    
            self.name = name
            self.age = age
        def say_hello(self):
            print('大家好,我是', self.name,self.age)
        def __repr__(self):
            return '姓名:{},年龄:{}'.format(self.name,self.age)
        def __del__(self):
            print('结束')
    
    s1 = Student('siri', 18)
    # 增加动态属性
    print(s1)
    print(s1.__repr__())
    print(repr(s1))
    

    输出:
    姓名:siri,年龄:18
    结束
    str和repr的区别,str重点在可读性,repr重点在准确性

  • 相关阅读:
    Ubuntu 12.04 root账户开启及密码重设
    Notepad++ 开启「切分窗口」同时检视、比对两份文件
    第11章 Java异常与异常处理
    第10章 Java类的三大特性之一:多态
    第9章 Java类的三大特性之一:继承
    第8章 Java类的三大特性之一:封装
    第7章 类和对象
    java 经典程序 100 例
    第6章 Java类中的方法
    第5章 Java数组
  • 原文地址:https://www.cnblogs.com/sihye/p/14443100.html
Copyright © 2011-2022 走看看