Day4----类属性、静态方法、多态

'''
访问权限控制
    私有:方法和属性前加__
    权限:不能在类外部通过对象直接访问使用
         只能在类内部使用
         不能被子类继承
    访问和使用私有属性:定义一个公有方法,来使用

私有方法:方法前面加__
        不能在类外部使用
        内部使用,不让外部直接调用

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)
'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小步调LLY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值