执行效率问题(对象属性和对象方法)

来源:12-2 计算节点的高度和平衡因子

崔东旭666

2019-11-04

老师,我用的是Python,问的问题跟本节无关,突然想到的:
创建类时,初始化对象属性值,如size;也有方法get_size获得对象size值
问题:
当类里别的方法 需要用到对象的size值,是直接用self._size获得,还是用方法get_size获得呢?建议用哪种方式呢?还是两者都可以呢?两者执行效率呢?

    def __init__(self):
        self._root = None
        self._size = 0
        
    def get_size(self):
        return self._size


写回答

1回答

liuyubobobo

2019-11-05

效率上没有区别。(即使有细微的区别,对于现代编程来说,不建议做区分。)


在使用上,其实也是都可以的。在类设计内部,我不太关注这一点。但是理论来讲,使用 get_size() 更好。这是因为,使用 get_size(),防止你的逻辑以外更改了 size 变量。而且,万一 get_size() 逻辑发生变化,只需要改 get_size() 就好了。


另外,值得一提的是,因为你在用 Python。Python 的设计模式和 C++, Java 等语言有所区别。一般不靠 getter 方法定义外部只读属性,而有自己的方式。比如这篇文章:https://blog.csdn.net/weixin_35653315/article/details/78077253


继续加油!:)

1
1
崔东旭666
非常感谢!
2019-11-05
共1条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程