8.Python类 和 对象(构造方法,封装、继承、多态)

构造方法:使用__init__定义有参构造

class Student():
    name = None
    age = None
    # __init__ 相当于Java的构造方法,用于外部在创建对象时传参数
    # 使用了__init__ 函数定义了有参构造,类在创建对象时就必须要传入了
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def say(self):
        print("my name is %s, i am %d years old" %(self.name, self.age))

s1 = Student("Tom", 18)
s1.say()

s2 = Student("Jerry", 20)
s2.say()

封装

# 将成员变量或方法私有化,两个下划线
class Person:
    #私有变量
    __python = None
    name = None
    __age = None
    
    def get_age(self):
        return self.__age

    def set_age(self, age):
        if age > 0:
            self.__age = age
        else:
            print("年龄不合法")
    def __function(self):
        print("私有方法")


p = Person()
p.name = "张三"
p.set_age(10)
print(p.name,p.get_age())
# p.function()

#小练习
class Phone:
    __flag = False
    
    #改变私有变量数值的函数
    def set_flag(self,flag):
        self.__flag = flag
    
    #是否启用5G的私有函数
    def __open_5G(self):
        if self.__flag:
            print("打开5G")
        else:
            print("关闭5G")

    #在类中使用公共函数调用私有函数,供类的对象使用
    def public_class(self):
        self.__open_5G()
phone = Phone()
phone.set_flag(True)
phone.public_class()

继承

class Phone2021():
    brand = '小米'
    def function2021(self):
        print(f'{self.brand}2021:打电话,发短信,拍照')
#单继承
class Phone2022(Phone2021):
    playGame="打游戏"
    def function2022(self):
        print(f'{self.brand}2022:打电话,发短信,拍照,{self.playGame}')

p = Phone2022()
p.function2021()# 小米2021:打电话,发短信,拍照

#多继承,跟单继承一样,多写几个父类就行,例如Phone2022(Phone2021,Phone2020, Phone2019)

#重写父类成员变量和调用父类成员
class Phone2023(Phone2022):
    #重写父类成员变量
    brand = "华为"
    #重写父类方法
    def function2022(self):
        print(f'{super().brand}2023:打电话,发短信,拍照,{Phone2022.playGame}')

p = Phone2023()

# 已经重写了父类
p.function2022()# 小米2023:打电话,发短信,拍照,打游戏

多态

#定义一个抽象父类
class Animal:
    #定义一个抽象方法action
    def action(self):
        pass

#定义一个子类Dog,继承自Animal
class Dog(Animal):
    #重写action方法
    def action(self):
        print("汪汪汪")

#定义一个子类Cat,继承自Animal
class Cat(Animal):
    #重写action方法
    def action(self):
        print("喵喵喵")

#定义一个函数make_noise,接收一个Animal类型的参数
def make_noise(animal:Animal):
    #调用animal的action方法
    animal.action()

#创建一个Dog实例
dog = Dog()
#创建一个Cat实例
cat = Cat()
#调用make_noise函数,传入Dog实例
make_noise(dog)# 汪汪汪
#调用make_noise函数,传入Cat实例
make_noise(cat)# 喵喵喵

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值