分享
三行代码  ›  专栏  ›  技术社区  ›  Rutger Mauritz

python对象作为类讲师的可选参数 - Python object as an optional argument of a class instructor

  •  1
  • Rutger Mauritz  · 技术社区  · 2 月前

    在创建类的新实例(比如a)时,我希望另一个类的实例(比如b)是构造函数的可选参数。如果B是作为参数给定的,那么我希望A的构造函数指定B属于A。如果不是作为参数给定的,我希望我的构造函数创建一个与B所属的类相同的新实例(比如C),并指定这个新实例属于A。

    更具体地说,我正在为一家医院制定到达流程。到达是根据随机过程发生的。我希望可以指定 arrival 事件与已存在的 customer (在这种情况下,我应该把它作为一个论点)或者它将是一个新的 顾客 ,在这种情况下,我的 到达 构造函数应创建的新实例 customer.

    2 回复  |  直到 2 月前
        1
  •  1
  •   DSC    2 月前
    class A:
        def __init__(self, b=None):
            if b is None:
                self.b = B()
            else:
                self.b = b
    
        2
  •  0
  •   user8426627    2 月前

    到达是根据随机过程发生的。我希望可以指定到达事件是与已经存在的客户有关(在本例中,我应该将其作为参数给出)还是将成为新客户,在这种情况下,我的到达构造函数应该创建一个新的客户实例。

    这只是dict和setdefault的用法:

    customers = {}
    
    for co in all_customers:
    
    known_customer = customers.setdefault(hash(co), customer(co))
    

    或者,如果您想让它作为构造函数:

    class arrival:
    
    known_cos = {}# quasi static
    
    def __init__(self, co)
    
      self.customer = known_cos.setdefault(hash(co) , customer(co))