Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于压缩属性、值对设置对象属性_Python - Fatal编程技术网

Python 基于压缩属性、值对设置对象属性

Python 基于压缩属性、值对设置对象属性,python,Python,如果压缩列表定义了每个属性的佣金百分比,并且压缩列表的长度可能会增加(例如,…('price_201',2.3),),您将如何简化计算佣金() 您可以使用字典: 佣金={ ‘价格四’:.04, “价格3”:.034, “价格2”:.029, ‘价格1’:.021} 然后,在计算佣金() def计算佣金(自): 如果self.price>=self.price_4: 佣金=佣金['price_4'] elif self.price>=self.price_3: 佣金=佣金['price_3']

如果压缩列表定义了每个属性的佣金百分比,并且压缩列表的长度可能会增加(例如,
…('price_201',2.3),
),您将如何简化
计算佣金()


您可以使用字典:


佣金={
‘价格四’:.04,
“价格3”:.034,
“价格2”:.029,
‘价格1’:.021}
然后,在
计算佣金()

def计算佣金(自):
如果self.price>=self.price_4:
佣金=佣金['price_4']
elif self.price>=self.price_3:
佣金=佣金['price_3']
elif self.price>=self.price_2:
佣金=佣金['price_2']
elif self.price>=self.price_1:
佣金=佣金['price_1']
其他:
佣金=0
setattr(自我、委托、委托)

您可以使用字典:


佣金={
‘价格四’:.04,
“价格3”:.034,
“价格2”:.029,
‘价格1’:.021}
然后,在
计算佣金()

def计算佣金(自):
如果self.price>=self.price_4:
佣金=佣金['price_4']
elif self.price>=self.price_3:
佣金=佣金['price_3']
elif self.price>=self.price_2:
佣金=佣金['price_2']
elif self.price>=self.price_1:
佣金=佣金['price_1']
其他:
佣金=0
setattr(自我、委托、委托)

首先,您应该在init函数中定义所有属性。例如,如果有人试图访问commission属性而没有首先检查它,则会出现错误。所以,为了确定,你应该用一些东西来初始化它

假设不需要将佣金作为压缩列表,您可以这样做:

comission = [ 0.04, 0.034, 0.029, 0.021]
class Price:
    def __init__(self, cost):
        self.price = cost 

        self.prices = [5,3,2.5,2]
        self.commission = 0 
    def calculate_commission(self):

        for index, prc in enumerate(self.prices):
            if self.price >= prc:
                self.commission = comission[index]
                break 
price = Price()
price.calculate_commission()
print(price.commission)
但是,如果您确实需要压缩列表,可以将self.commission行更改为

      self.commission = zipped_price_and_commission[index][1]

编辑:在看到您的更新后:如果佣金数量增加,您只需更新self.prices变量以反映它们。您还应该将价格作为参数传递给类,而不是首先在类中设置它,您应该在init函数中定义所有属性。例如,如果有人试图访问commission属性而没有首先检查它,则会出现错误。所以,为了确定,你应该用一些东西来初始化它

zipped_price_and_commission = [
('price_4', .04),
('price_3', .034),
('price_2', .029),
('price_1', .021),
假设不需要将佣金作为压缩列表,您可以这样做:

comission = [ 0.04, 0.034, 0.029, 0.021]
class Price:
    def __init__(self, cost):
        self.price = cost 

        self.prices = [5,3,2.5,2]
        self.commission = 0 
    def calculate_commission(self):

        for index, prc in enumerate(self.prices):
            if self.price >= prc:
                self.commission = comission[index]
                break 
price = Price()
price.calculate_commission()
print(price.commission)
但是,如果您确实需要压缩列表,可以将self.commission行更改为

      self.commission = zipped_price_and_commission[index][1]
编辑:在看到您的更新后:如果佣金数量增加,您只需更新self.prices变量以反映它们。您还应该将价格作为参数传递给类,而不是在类内部设置价格

zipped_price_and_commission = [
('price_4', .04),
('price_3', .034),
('price_2', .029),
('price_1', .021),
]

]


我在OP中添加了更多的细节。然后压缩列表的长度可能会增加。例如,价格水平可能上升到“价格200”
我在OP中添加了更多细节。然后压缩列表的长度可能会增加。例如,价格水平可能会上升到
'price_200'
我仍然会在循环中使用
zip
对于邮政编码中的p,c(价格,佣金):…
看起来比
枚举
更“pythonic”我仍然会在循环中使用
邮政编码:
对于邮政编码中的p,c(价格,佣金):…
看起来更“pythonic”而不是枚举