python学习日记12 python基本语法(封装&继承&多态&类方法和静态函数)

这篇博客详细介绍了Python的面向对象特性,包括封装的概念,如何创建私有属性和函数,单继承、多继承的实现与应用场景,运算符重载,以及多态的基本原理。此外,还探讨了类方法和静态函数的使用,并提到了对象的内置属性和函数。
摘要由CSDN通过智能技术生成

一、封装&

面向对象的三大特征:封装,继承和多态

广义的封装:函数的定义和类的定义

狭义的封装:在面向对象中,一个类中的某些属性,如果不希望被外界直接访问,则可以将该属性私有化,该属性只能在当前类中被直接访问,如果在类的外面需要访问【获取或修改】,则可以通过暴露给外界的函数间接访问

封装的本质:将类中的属性进行私有化

1.私有属性

# 1.属性未被私有化
class Person1():
    def __init__(self,name,age):
        # 公开属性
        self.name = name
        self.age = age
    def show(self):
        print(f"姓名:{
     self.name},年龄:{
     self.age}")
p1 = Person1('张三',10)
# 在类的外面可以直接访问
print(p1.name,p1.age)    # 获取
p1.show()
p1.name = 'jack'          # 修改
p1.age = 20
print(p1.name,p1.age)
p1.show()

print("*" * 30)

# 2.属性被私有化
class Person2():
    def __init__(self,name,age):
        # 私有属性:只需要在属性名的前面添加两个下划线
        self.__name = name
        self.__age = age
    def show(self):
        print(f"姓名:{
     self.__name},年龄:{
     self.__age}")
p2 = Person2('张三',10)
p2.show()
# 注意:一个属性一旦被私有化,只能在类的内部被访问,在类的外面无法直接访问,
# 直接访问:对象.属性
# print(p2.__name,p2.__age)

"""
工作原理:属性被私有化之后,私有属性在内存中可能以另外一种形式存在,常见形式:_类名__属性名
        但是,不建议使用,因为在不同的系统中,不同的版本下,存在形式可能不同,违反了Python跨平台的特点
"""
# print(p2._Person2__name)

# 3.暴露给外界的函数
class Person3():
    def __init__(self,name,age):
        self.__name = name
        self.__age = age
    def show(self):
        print(f"姓名:{
     self.__name},年龄:{
     self.__age}")

    # 修改
    def set_name(self,name):
        self.__name = name
    # 获取
    def get_name(self):
        return self.__name

    def get_age(self):
        return self.__age
    def set_age(self,age):
        if age < 0:
            age = 0
        self.__age = age

p3 = Person3('李四',12)
print(p3.get_name())       # print(p1.name,p1.age)
p3.set_name('jack')         # p1.name = 'jack'
print(p3.get_name())

print(p3.get_age())
p3.set_age(18)
print(p3.get_age())

print("*" * 50)

# 4.@property
"""
@property:修饰某个函数,该函数会被当做属性使用,该函数的函数名相当于是一个变量名,指向该函数的返回值
          作用:在私有属性的使用中,为了获取私有属性的值
@xxx.setter:修饰某个函数,该函数会被当做属性使用,xxx必须和被@property装饰的函数名相同
          作用:在私有属性的使用中,为了给私有属性修改值
          
注意:为了提高代码的可读性,同一个私有属性暴露给外界的函数名建议同名,使用私有属性的属性名
"""
class Person4():
    def __init__(self,name,age):
        self.__name = name
        self.__age = age
    def show(self):
        print(f"姓名:{
     self.__name},年龄:{
     self.__age}")

    # 获取
    @property
    def name(self):
        return self.__name
    # 修改
    @name.setter
    def name(self,name):
        self.__name
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值