【Python】Python学习笔记13

代码笔记:

'''
新式类的写法:
    class 类名(object):           # 继承了object类
    object类:Python为所有对象提供的基类(顶级父类),提供了一些基础的内置属性和方法,可以通过dir()进行查看。
派生类:如果子类拥有与父类不同的属性或方法时,则称该子类为派生类。
'''
class Animal:
    def walk(self, name):
        print(f'{name}会行走')
class Dog(Animal):
    def bite(self, name):       # 派生类
        super().walk(name)
        print(f'{name}会咬人')
dog = Dog()
dog.bite('旺财')
'''
多继承:子类可以继承自多个父类,并且继承多个父类的所有属性和方法。
格式:class 类名(父类1,父类2,...,父类n):
注意:当多个父类中存在同名的属性或方法时,优先继承第一个父类的属性和方法。
'''
class Cream:
    cream = '奶油'
    def introduce(self):
        print(f'我有{self.cream}')
class Ice:
    ice = '冰'
    def introduce(self):
        print(f'我有{self.ice}')
class IceCream(Cream,Ice):
    icecream = '冰淇淋'
    def display(self):
        print(f'我通过{self.cream}和{self.ice}制作了{self.icecream}')
icecream = IceCream()
icecream.display()
icecream.introduce()    # 多个父类同名时,优先调用第一个父类的方法;可以通过【__mro__】查看Python中类调用方法的顺序。
print(IceCream.__mro__)
'''
面向对象的三大特性:封装、继承、多态
多态:只同一种方法具有不同的表现形式。
多态的前提:继承、重写
'''
class Animal1(object):
    """父类:动物类"""
    def shout(self):
        print('动物会叫')
class Cat(Animal1):
    """子类1:猫类"""
    def shout(self):
        print('喵喵~')
class Dog(Animal1):
    """子类2:狗类"""
    def shout(self):
        print('汪汪!')
cat = Cat()
cat.shout()
dog = Dog()
dog.shout()
'''
多态性:一种调用方式,有不同的执行结果。利用接口(接口也是一种函数)实现。
'''
animal = Animal1()
def interface(obj):
    obj.shout()
interface(animal)
interface(cat)
interface(dog)
'''
静态方法:1.通过@staticmethod装饰器定义,不需要访问实例或类的属性。
        2.它们适用于逻辑上属于类的方法,但不依赖于实例状态。
        3.静态方法提供了一种清晰的方式来组织代码,而无需依赖实例。
    注意:静态方法可以通过实例化对象访问,也可以使用类访问。
'''
class Person(object):
    @staticmethod       # 静态方法
    def study(name):
        print(f'{name}会学习')
Person.study('小华')
pe = Person()
pe.study('张三')
'''
类方法:1.通过@classmethod装饰器定义。
       2.与实例方法不同,类方法的第一个参数是类本身(cls),而不是实例。
       3.它主要用于定义与类相关的行为,通常用于工厂方法或对类属性的操作。
       4.方法内部只需要访问类属性,可以通过【cls.类属性】的方式访问。
    注意:
       1.类方法可以被类和实例调用。
       2.使用类名调用时,更符合面向对象设计的原则。
       3.常用于操作类属性或作为工厂方法。
'''
class Cup:
    price = 19                    # 类属性
    def __init__(self, name):     # 构造函数
        self.name = name          # 实例属性
    def display(self):            # 实例方法:既可以访问实例属性,又可以访问类属性
        print(Cup.price, self.name)
    @staticmethod                 # 静态方法:不能访问实例属性
    def buy():
        print(Cup.price)
    @classmethod                  # 类方法:不能访问实例属性
    def sell(cls):
        print(f'Cup sell {cls.price}')
cp = Cup('咖啡杯')
cp.display()
Cup.buy()
Cup.sell()

运行结果:

旺财会行走
旺财会咬人
我通过奶油和冰制作了冰淇淋
我有奶油
(<class '__main__.IceCream'>, <class '__main__.Cream'>, <class '__main__.Ice'>, <class 'object'>)
喵喵~
汪汪!
动物会叫
喵喵~
汪汪!
小华会学习
张三会学习
19 咖啡杯
19
Cup sell 19

Process finished with exit code 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值