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

目录

1.介绍

2.封装的体现

(1)属性私有化:

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

(2)方法私有化:

 

3.私有化封装后的限制


Python面向对象三大属性(一)封装_第1张图片

1.继承:https://blog.csdn.net/g_optimistic/article/details/86490048

2.多态:https://blog.csdn.net/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
  • 对象名._类名__属性名=值

Python面向对象三大属性(一)封装_第2张图片


(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.私有化封装后的限制

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

不可以

 

你可能感兴趣的:(Python基础,Python面向对象,Python面向对象三大属性)