小编and*_*kee的帖子

Python类设计:显式关键字参数与**kwargs vs. @property

是否有一个普遍接受的最佳实践来创建一个实例将具有许多(不可违约)变量的类?

例如,通过显式参数:

class Circle(object):
    def __init__(self,x,y,radius):
        self.x = x
        self.y = y
        self.radius = radius
Run Code Online (Sandbox Code Playgroud)

使用**kwargs:

class Circle(object):
    def __init__(self, **kwargs):
        if 'x' in kwargs:
            self.x = kwargs['x']
        if 'y' in kwargs:
            self.y = kwargs['y']
        if 'radius' in kwargs:
            self.radius = kwargs['radius']
Run Code Online (Sandbox Code Playgroud)

或使用属性:

class Circle(object):
    def __init__(self):
        pass

    @property
    def x(self):
        return self._x

    @x.setter
    def x(self, value):
        self._x = value

    @property
    def y(self):
        return self._y

    @y.setter
    def y(self, value):
        self._y = value

    @property
    def radius(self):
        return self._radius

    @radius.setter
    def radius(self, …
Run Code Online (Sandbox Code Playgroud)

python oop class

7
推荐指数
3
解决办法
3978
查看次数

标签 统计

class ×1

oop ×1

python ×1