Python"隐藏"属性

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_18683985/article/details/79957926

Python的class作为一种新式类,属性基本上可以随意添加
比如:

class Man:
    pass#定义一个Man类

man = Man()#实例化一个Man类
man.age = -30
man.name = "man"

从上面看,语法上是没问题的,但是从逻辑上看,没有人的年龄会是负数的。而且,这种实例化之后随意增加属性,总感觉不是很安全。

然后我想到了方法。
如果class的定义改成如下:

class Man:
    def set_age(self,new_age):
        self.age = new_age
    def get_age(self):#其实按照我的习惯我可能直接就"def age"了
        return self.age

那么使用相应的变成了
dog = Dog()
dog.set_age(-10)

虽说还是可以传入-10,但是我们可以改造一下我们的set_age方法

def set_age(self,new_age):
    if new_age > 0 and new_age < 200:
        self.age = new_age
    else:
        self.age = 0

吐个槽,Python的作用域以及Python的”动态”类实在是太恶心了

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页