Python 面向对象进阶

1.私有成员


1. 概念: 私有成员 只能在 本类 内部使用
      好处:
          1.保护私有属性不被随意修改
          2.提高封装性,将用户不需要使用的功能设置为私有, 用户只需要关心公有的. 
          
      语法: 
          在成员名前面加 两个 下划线, 这样的成员就是私有成员
          
          self.__属性名 =def __方法名(self):
              pass

2.__del__方法


2.1. 调用时机: 对象空间 被销毁的时候, 自动调用 对象上的 __del__ 方法
    
class 类名(object):

    def __del__(self):
        # 对象被销毁的时候自动调用执行, 清理对象占用的资源 或者 明确对象的销毁时机
        pass
        
2.2. 对象的销毁时机
	a. 脚本执行结束, python占用的所有内存资源都被释放, 包括对象空间(python垃圾回收机制)
    b. 对象的没有被任何变量引用的时候, 对象被当做垃圾回收了
    	手动清空对象空间:
            	del 对象变量
                对象变量 = None

3.继承(重点)


3.1. 概念: 子类继承父类, 直接使用父类上的成员(属性和方法)
   语法:
       class 子类名(父类名): # 默认继承 object
           # 子类新增的成员
           pass
       
   注意: 私有成员不能被继承
            
3. 2. 继承的特征
     a. 单继承
     b. 多层继承
     c. 多继承(骡子 同时继承 马和驴)
     d. 重写
     		概念: 子类中定义了与父类相同名字的成员, 即子类重写父类成员
             属性重写
             方法重写
        方法重写:
             当父类上的方法不满足子类需要,但是子类不得不使用该方法,则在子类中重写父类方法.
                
                例如: 子类和父类 初始属性不同, 需要重写 __init__ 方法
            调用父类上的方法:
                super().父类方法名([实参])
                super(子类名,self).父类方法名([实参])
                
            例如:
                class Goods(object):
                    def __init__(self,name,price):
                        self.name = name
                        self.price = price
                
                
          class Phone(Goods):
          		def __init__(self,name,price,brand,size,color):
                   #self.name = name
                   #self.price = price
                   super().__init__(name,price) # 调用父类上的方法
                   self.brand = brand
                   self.size = size
                   self.color = color
            
       e. 多态(了解): 继承,重写, 相同的方法实现的功能不同, 这就是多态

3. 查看对象信息

   	type(对象) : 查看对象的类名(类型)
        dir(对象) : 查看对象上的所有的属性(属性和方法都称为属性)
        isinstance(对象,类名): 判断对象是否是指定类的实例(对象)

4.类属性和实例属性

1. 实例属性: 对象上的属性
      	绑定方式:
              动态: 对象变量.属性名 = 值
              初始化方法中绑定: self.属性名 =2. 类属性: 类上的属性
   	绑定方式:
           动态: 类名.属性名 = 值
           在类中绑定:
               class 类名(object):
                   类属性名 = 值
                  
    访问:
        类名.类属性名
        作用: 将所有对象共享的属性设置为类属性, 所有的对象都能使用, 从而节约内存空间.

5类方法和静态方法

class 类名(object):
     # 实例方法
     def 方法名(self,[形参]):
         pass
     
     # 类方法
     @classmethod
     def 类方法名(cls,[形参]):
         # cls == class 调用的那个类
         pass
     
     # 静态方法
     @staticmethod
     def 静态方法名([形参]):
         pass
        
# 调用
类名.类方法名()
类名.静态方法名()



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值