最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • python3类中的Cat变量使用有限制吗?

    正文概述    2020-05-09   346

    看到cat我相信小伙伴就会想到dog,毕竟我们前两篇刚刚讲说。cat和dog的用法差不多,相信本次小伙伴们的学习会进行的非常顺利。本期我们也会从最基本的定义讲起,等大家了解的基本的用法,再进行代码的实战教学。内容篇幅比较长,不过小编相信大家的实力都是没有问题的。


    这里定义了Cat类和它的子类Blackcat,主要说明两个主题:私人属性、方法的继承与覆盖

    私人属性的使用是受到一定限制的,这里主要说明在哪些地方可以用,哪些地方不能调用

    因为子类继承父类时,会将父类的所有方法都继承过来,但是如果在子类中定义了一个和父类同名的方法,则会将父类的方法覆盖下去,__init__也是如此

    定义类

    class Cat(Animal):
        
        def __init__(self, weight): # 覆盖了父类的__init__,所以定义实例时不需要指定name和age
            self.__weight = weight
            self._weight = weight + 1
            self.weight = self._weight + 1
        
        def get_myweight(self):
            print("My weight is", self._weight, "kg")
        
        def get_trueweight(self):
            print("Actually the cat's weight is",self.__weight)
        
        @staticmethod
        def print_cat():
            print("这个类是Animal类的子类,也是Blackcat类的父类")
            print("Cat类和Blackcat类结合,主要用于讲解私人属性、方法的继承与覆盖")
            
            print("weight是普通属性,可以在外部访问,即用类调用属性获得,可以被子类内部调用")
            print("_weight这样前面加一个下划线表示希望你不要在外部访问它,但是还是可以访问的,可以被子类内部调用")
            print("__weight这样加两个下划线的是不允许外部访问的,只可以在类中被调用,不可以被子类内部调用")
            
            print("__init__在子类中定义则覆盖了父类中的__init__,不需要指定父类中的属性,也无法调用父类的属性")
            print("在子类中实现和父类同名的方法,也会把父类的方法覆盖掉")
            
    class Blackcat(Cat):
        
        def get_weight(self):
            print("My weight is", self.weight)
        
        def get_weight_again(self): # 可以
            print("Actuall my weight is", self._weight)
            
        def get_true_weight(self): # 这个方法因为无法调用self.__weight所以这个方法无法使用
            print("My weight is exactly", self.__weight)
            
        def get_trueweight(self): # 覆盖了Cat父类中定义的方法
            print("My weight is exactly", self._weight+1)


    创建实例

    # 测试私人变量的外部访问
    cole = Cat(5)
    cole.weight
    # 7
    cole._weight
    # 6
    cole.get_trueweight() # 在类中引用__weight,用这个方法返回
    # Actually the cat's weight is 5
    cole._Cat__weight # 非要访问也可以,其实是python解释器把__weight改成了_Cat__weight
    # 5
     
    # 测试私人变量的子类调用
    cain = Blackcat(5)
    cain.get_weight()
    # My weight is 7
    cain.get_weight_again()
    # Actuall my weight is 6
    # cain.get_true_weight() # 报错
     
    # 测试方法的继承与覆盖
    cain.get_myweight() #
    # My weight is 6 kg
    cain.get_trueweight() # 子类中同名函数覆盖父类
    # My weight is exactly 7

    以上就是python3类中的Cat变量的使用,具体的测试方法都在上面,大家可以逐个代码复制测试,相信大家都可以成功测试出结果,小编在这里等待大家的互动~


    起源地下载网 » python3类中的Cat变量使用有限制吗?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元