''' 访问权限控制 私有:方法和属性前加__ 权限:不能在类外部通过对象直接访问使用 只能在类内部使用 不能被子类继承 访问和使用私有属性:定义一个公有方法,来使用 私有方法:方法前面加__ 不能在类外部使用 内部使用,不让外部直接调用 class Dog: def born(self): print('生了一只小狗') self.__sleep() def __sleep(self): print('休息30天') dog=Dog() dog.born() 私有属性 class People: def __init__(self): self.__ICBC_money=0 # 私有属性 # 定义公有方法 def get_money(self): return self.__ICBC_money def set_money(self,money): self.__ICBC_money+=money return self.__ICBC_money # 实例对象.__dict__ 查看对象具有的属性信息 xw=People() money=xw.get_money() print(money) xw.set_money(1000) money=xw.get_money() print(money) 对象(实例对象):通过class定义的类创建,即通过类实例化的,称为实例 定义的属性为实例属性 实例属性:每个实例对象中都存在一份,值可能不一样 类(类对象):通过class定义 python解释器在创建类时自动创建 定义实例对象 可以保存属性信息,称为类属性 类属性:在类内部,方法外部定义的变量。字内存中只有一份 判断实例属性、类属性: 假设为实例属性,看这个属性值对不同实例对象,属性值是否一样,需要同时变化 是:类属性 不是:实例属性 如果不存在和和实例属性相同的类属性,则可以使用实例对象访问类属性 实例方法:类中默认定义的方法,第一个参数为self 类方法:使用@classmethod装饰的方法 第一个参数为cls 静态方法: @staticmethod 对象.方法名() 类名.方法名() 方法中使用实例属性,使用实例方法 方法中不使用实例属性,用类属性,使用类方法 不使用实例属性、类属性,此时可以定义静态方法 class Dog(): class_name='狗类' def __init__(self,name,age): self.name=name self.age=age def play(self): print(f'小狗{self.name}在快乐的玩耍') @classmethod def get__class_name(cls): return cls.class_name @staticmethod def show_info(): print('这是一个静态方法') dog=Dog('大黄',2) dog.play() dog.show_info() Dog.show_info() ''' ''' 多态:需要使用父类对象的地方,也可使用子类对象,得到不同结果 使用步骤: 子类继承父类 子类重写父类方法 通过对象调用这个方法 class Dog(): def __init__(self,name): self.name=name def play(self): print(f'小狗{self.name}在快乐的玩耍') class XTQ(Dog): def play(self): print(f'小狗{self.name}在天上追云海') def play_with_dog(obj_dog): obj_dog.play() dog=Dog('大黄') play_with_dog(dog) xtq=XTQ('大白') play_with_dog(xtq) ''' ''' 鸭子类型的多态 class Cat(): def __init__(self,name): self.name=name def play(self): print('小猫在玩') def play_with_dog(obj_dog): obj_dog.play() cat=Cat('小辉') play_with_dog(cat) '''
Day4----类属性、静态方法、多态
猜你喜欢
转载自blog.csdn.net/m0_46493223/article/details/126091086
今日推荐
周排行