• python学习笔记11.1-类的继承与动态属性的设置


    class Mobile:
        # 类属性
        can_call = True
    
        def __init__(self, brand, color):
            self.brand = brand
            self.color = color
    
        def sell(self, price, discount=1):
            print(f'手机被卖了{price*discount}元')
            return price
    
        def call(self):
            print('正在打电话')
            self.take_photo()
    
        def take_photo(self):
            print('拍照')
    
        # 类方法的定义  声明类方法
        @classmethod
        def abc(cls):
            print(f'这个类{cls}正在使用abc')
    
        @staticmethod
        def baozhaung():
            """
            没有固定参数,与类和对象没有直接关联
            无法使用self.属性和其他实例方法
            无法使用cls.属性 和其他类方法
            """
            print('这是一个静态方法')
    
    
    class SmartPhone(Mobile):
        pass
    
    
    # 父类的所有的属性和方法,子类都可以用
    xiaomi = SmartPhone('xiaomi', '粉色')
    xiaomi.call()
    """
    方法重写:重写父类的方法
    当自己有对应的方法或属性,优先使用自己的,如果自己没有则往上一层一层找
    
    多重继承:子类(父类1, 父类2)
    
    super().方法   调用父类的方法
    """
    
    
    class Mobile:
        can_call = True
    
        def call(self):
            print('正在打电话')
    
    
    class SmartPhone(Mobile):
    
        def call(self):
            super().call()  # 使用父类的方法,即会先执行父类里的call方法
            print('智能手机正在打电话')
    
    
    class MusicPlayer:
    
        def play_music(self):
            print('正在放音乐')
    
    
    class Iphone(SmartPhone, MusicPlayer):
        """
        多重继承
        """
    
        def call(self):
            print('苹果手机正在打电话')
    
    
    xiaomi = SmartPhone()
    xiaomi.call()
    
    
    iphone = Iphone()
    iphone.call()
    iphone.play_music()
    class Mobile:
        color = '黑色'
    
    
    # 获取属性
    print(Mobile.color)
    # 获取属性不常用的方法
    print(getattr(Mobile, 'color'))
    # 如果获取的属性不存在,默认返回None,也可以设置默认值
    print(
    getattr(Mobile, 'aaa', '默认值'))

    # 以上两种方法的区别:getattr,属性可作为字符传进来 # p_name = input('输入属性:') # print(getattr(Mobile, p_name)) # 设置属性1 Mobile.logo = 'apple' # 设置属性2 setattr(Mobile, 'hh', '123') print(Mobile.logo) print(Mobile.hh) Mobile.color = '黄色' # 修改属性 print(Mobile.color)
  • 相关阅读:
    Codevs 4633 [Mz]树链剖分练习
    Codevs 2460 == BZOJ 1036 树的统计
    洛谷 P1038 神经网络
    POJ 1062 昂贵的聘礼
    POJ 1459 Power Network
    POJ 1149 PIGS
    Codevs 1993 草地排水
    指针与引用
    江哥的DP题(G)
    江哥的DP题(F)
  • 原文地址:https://www.cnblogs.com/wsfsd/p/15341150.html
Copyright © 2020-2023  润新知