多语言展示
当前在线:1814今日阅读:27今日分享:41

python类class的三种属性详解

python类有公有属性、受保护的属性、私有属性三种属性,本篇介绍着三种属性到底都有什么特点及用法。
工具/原料
1

python3.6

2

pycharm

方法/步骤
1

Dog(object):    def __init__(self, name, age, job):        # 公有属性: 允许随意访问        self.name = name        # 受保护的属性:允许直接访问,但是不建议直接访问        self._age = age        # 私有属性:拒绝直接访问        self.__job = job

2

# 所有权限相关的设置,在类内部都不受影响def show(self):    print(self.name, self._age, self.__job)def set_age(self, age):    print('通过方法间接修改受保护的属性')    self._age = agedef get_age(self):    print('有人打听你年龄了')    return self._age

3

# 正常情况下调用方法需要dog.job()# 加上@property以后,调用方法就不需要加括号了,直接dog.job# 只要出现这样的写法,在外部调用.job就不是访问job属性,而是调用job()方法# 特殊的get方法@propertydef job(self):    print('有人问你工作呢')    return self.__job

4

# 如果设置了@property访问属性,就可以继续设置修改属性的写法# 特殊的set方法@job.setterdef job(self, job):    print('有人给你份工作')    if job == 'code':        print('哥不想在写代码了')    else:        self.__job = job

5

dog = Dog('xq', 19, 'baoan')print(dog.name)  # 公有属性可以随意访问print(dog._age)  # 受保护的变量可以直接访问,只是不太建议直接访问print(dog._Dog__job)  # 可以通过这种方法强行访问私有属性,但是极度不推荐这样做

6

dog = Dog('xq', 19, 'baoan')print(dog.name)  # 公有属性可以随意访问print(dog._age)  # 受保护的变量可以直接访问,只是不太建议直接访问print(dog._Dog__job)  # 可以通过这种方法强行访问私有属性,但是极度不推荐这样做

注意事项

python中所有的属性都是可以通过一定方法访问到的。

推荐信息