python-学习笔记-07

*************************************面向对象******************************************

  • 类 class
    class 类名:      # 定义对象
    
        def 方法1(self,参数列表)   # self 相等于this
            pass
    
    
    object = 类名()   # 创建对象

    类名使用驼峰映射,首字母大写,类里面的方法第一个参数必须是self

  • 在类外部给对象添加属性

    对象.属性 = ""   #  可以在类的外面给对象添加属性(不推荐)

    这种方式不推荐

  • self

    self.name    # 可以获取对象的属性

    self 相等于 java 中的this ,指当前调用对象

  • __init__ (内置初始化方法)
    class  Cat:
        
        def __init__(self):
            
            print("这是一个初始化方法")
    
            self.name = "tom"       # 初始化属性
    
    cat = Cat()
    在创建对象的时候会调用初始化方法,相等于java 中的构造函数
  • __del__ (内置销毁方法)
    class  Cat:
    
    
        def __init__(self):
            
            print(123)
    
        def __del__(self):
    
            print(456)

    对象销毁时调用的方法  del 关键字可以删除对象

  • __str__ (内置字符串)
    class  Cat:
    
    
        def __init__(self):
            
            print(123)
    
        def __str__(self):
    
            print(456)
    
            return ""

    __str__ 相等于  java中toString 方法,必须有返回值,且类型为字符串

  • None (关键字)
    class Cat:
    
        def __init__(self):
    
            self.name = None   # 空,相等于java 中的null

    此关键字为空的意思,

  • 身份运算符
  • 私有属性和私有方法  
    def __test():
        __age=""
        ......
    
    

    在属性和方法前面添加2个下划线,  

  • 继承的语法

    class 类名(父类名):
    
        pass

    (父类) 就可以继承    多继承:类名(父类名,父类名)

  • super (类)

    class Amige:
        def  eat(self):
            print(123)
    
    class Jeken(Amige):
        def  eat(self):
            super().eat()      #调用父类的方法  
            #Amige.eat(self)    #也可以用这种方法使用,但3.0不推荐
            print(456)
    
    test = Jeken();
    test.set()

    super().方法可以调用父类的方法

  • __mro__ (可以查询方法的执行顺序)
     

    print(C.__mro__)

    查询类里面方法的执行顺序

  • 类方法

    @classmethod
    def 类方法名(cls):
        pass

    必须有注释@classmethod  ,必须有参数cls (使用其他名称也可以,但是习惯是cls),调用的时候不需要传cls

  • 类属性

    class A(object):
        
        count = 0

    A.count    类的对象也可以调用。但是赋值的时候必须是类名.属性

  • 静态方法

    @staticmethod
    def 静态方法名():
        pass
    
    #  如果一个方法不需要访问 实例属性、实例方法  和 类属性、类方法就可以定义静态方法

    类名.方法 ()   调用方法(不需要创建对象),不需要self  和 cls 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值