Python 和 OO 编程(类属性和派生类)

标签 python oop class attributes

我担任 Java 程序员已有 4.5 年了。现在我已经切换到 Python(主要原因是我现在是一名自由职业者并且我一个人工作)。我向我的客户提供源代码,有时我不得不激发我的设计选择。现在的问题。 我必须支持我的设计选择:

class Base(object):
    def foo(self):
        self.dosomethig(self.clsattr1)
        self.dosomethig(self.clsattr2)

class Derived(Base):
    clsattr1 = value1
    clsattr2 = value2

基类总是意味着被扩展或派生。
我的客户(一名 Java 程序员)认为我的方法从 OO 的角度来看并不优雅。 他声称以下方法更好:

class Base(object):
    def __init__(self, clsattr1, clsattr2):
        self.clsattr1 = clsattr1
        self.clsattr2 = clsattr2

    def foo(self):
        self.dosomethig(self.clsattr1)
        self.dosomethig(self.clsattr2)

class Derived(Base):
    def __init__(self):
        super(Derived, self).__init__(value1, value2)

我意识到第二种方法比第一种方法优雅得多,但我告诉他 第一种方法更方便。我告诉他我没有看到任何问题,但他不相信。 第一种方法这么糟糕吗?为什么?

最佳答案

似乎没有任何区别。不要浪费你的时间和他争论——重构你的类并拿钱可能会更快。

关于Python 和 OO 编程(类属性和派生类),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4754783/

相关文章:

python - 从Python代码中获取列表索引超出范围

python - 在裤子buildtool中, 'advanced'选项和常规选项有什么区别?

jquery - 检测某个类的输入元素中的输入

c++ - 类中的 Boost::Mutex 不是线程安全的

c++ - 为类方法创建模板

c++ - 使用复制构造函数时,是否在复制构造函数之前初始化了类数据成员?

python - 将sklearn导入python

python - 使用 Selenium 从中间事件中捕获 JSON 数据

oop - OOP 组织问题的最佳解决方案

c++ - 如何在类中将 bool 值更改为字符串?