私有化之property

# 姓名:东电小张
# 开发时间:2021/4/21 22:54
'''
Python中如果父类里面有私有属性,子类不能继承
java中可以继承但是不能访问
'''

class Student():
    def __init__(self, name, age, score):
        self.__name = name
        self.__age = age
        self.__score = score

    @property
    def age(self):
        return self.__age

    @age.setter
    def age(self, age):
        if 0 < age < 100:
            self.__age = age
        else:
            print('输入年龄不合法!')
            exit()

    # def setAge(self, age):
    #     if 0 < age < 100:
    #         self.__age = age
    #     else:
    #         print('输入年龄不合法!')
    #         exit()
    #
    # def getScore(self):
    #     return self.__score

    def __str__(self):
        return '{},性别{},成绩为{}'.format(self.__name, self.__age, self.__score)

    def showinfo(self):
        print('{},性别{},成绩为{}'.format(self.__name, self.__age, self.__score))


s = Student('张三', 18, 60)
print(s)
s.age = 13
print(s.age)

 

Python中的类可以使用下划线来实现私有化属性和方法。以一个下划线开头的属性或方法被视为私有的,不应该在类的外部被访问。但是,这只是一种约定,Python并没有真正的私有化机制。如果你真的想访问这些私有属性或方法,你仍然可以在类的外部访问它们。另外,Python还提供了@property装饰器来实现属性的getter和setter方法,以及__slots__变量来限制实例能添加的属性。如果你想了解更多关于Python类的特性,可以参考引用和引用。 以下是一个简单的示例,演示了如何在Python中实现类的私有化: ```python class MyClass: def __init__(self): self.public_var = "I'm a public variable" self._private_var = "I'm a private variable" def public_method(self): print("This is a public method") def _private_method(self): print("This is a private method") ``` 在这个示例中,我们定义了一个名为MyClass的类,其中包含一个公共变量public_var和一个私有变量_private_var,以及一个公共方法public_method和一个私有方法_private_method。注意到私有变量和私有方法都是以一个下划线开头的。 如果我们在类的外部创建一个MyClass的实例,我们可以访问公共变量和公共方法,但不能访问私有变量和私有方法: ```python my_object = MyClass() print(my_object.public_var) # 输出:I'm a public variable my_object.public_method() # 输出:This is a public method print(my_object._private_var) # 输出:I'm a private variable my_object._private_method() # 输出:This is a private method ``` 注意到我们可以在类的外部访问私有变量和私有方法,但这并不是一个好的实践。因此,我们应该遵循约定,将它们视为私有的,并在类的内部使用它们。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值