Python面向对象三大属性(一)封装

本文介绍了Python面向对象编程中的封装概念,强调了封装对于保护代码和核心功能的重要性。详细阐述了属性私有化和方法私有化的实现,包括如何通过setter和getter方法来操作私有属性,并探讨了私有化封装后的限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.介绍

2.封装的体现

(1)属性私有化:

私有化之后,类内部可以使用,类外不可以使用,正常修改的方法:

(2)方法私有化:

 

3.私有化封装后的限制


1.继承:https://blog.youkuaiyun.com/g_optimistic/article/details/86490048

2.多态:https://blog.youkuaiyun.com/g_optimistic/article/details/86516078


1.介绍

不让别人看到自己的某些代码,起到保护作用,(不让别人动你的代码)

在开发过程中,保护核心代码,不让外部使用


2.封装的体现

正常代码:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        msg = '{}的年龄是{}'.format(self.name, self.age)
        return msg


person = Person('zs', 10)
person.age = -10
print(person)
# zs的年龄是-10

(1)属性私有化:

给类的属性前面加两个下划线:  __

class Person:
    def __init__(self, name, age):
        self.__name = name
        self.__age = age

    def __str__(self):
        msg = '{}的年龄是{}'.format(self.__name, self.__age)
        return msg


person = Person('zs', 20)
person.__name = '张三'  # 在类的外面不能修改name的值
print(person)  # zs的年龄是20

私有化之后,类内部可以使用,类外不可以使用,正常修改的方法:

  • 使用 setter,getter,方法
class Person:
    def __init__(self, name, age):
        self.__name = name
        self.__age = age

    def set_age(self, age):
        if age < 0 or age > 150:
            print('输入的年龄不合法...')
            return
        self.__age = age

    def get_age(self):
        return self.__age

    def __str__(self):
        msg = '{}的年龄是{}'.format(self.__name, self.__age)
        return msg


person = Person('zs', 20)
person.set_age(-10)  # 输入的年龄不合法...
ret = person.get_age()
print(ret)  # 20
print(person)  # zs的年龄是20
  • 对象名._类名__属性名=值


(2)方法私有化:

给类的方法前面加两个下划线:  __

# 方法私有化之后,类外面的不能调用,但是类里面可以调用
class CallPhone:
    def __tell(self):
        print('正在通话中...')

    def tell_one(self, money):
        if money > 0:
            self.__tell()  # 在类内部,调用私有化后的方法
        else:
            print('欠费了啊...')
            return


c1 = CallPhone()
c1.tell_one(-1)  # 欠费了啊...
c1.tell_one(10)  # 正在通话中...

 


3.私有化封装后的限制

位置可不可以使用
类内部可以
类外,对象外不可以
子类,子类对象

不可以

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值