属性和setter在不同版本的Python中创建一个类

时间:2017-05-18 09:35:23

标签: python python-2.7 python-3.x

我想在Python 2.7(称为Point)中构建一个类,并检查输入参数,如坐标和其他属性。我认为更好的方法是在每个参数中创建一个具有属性和setter的类。像这样:

$( document ).ready(function() {
    $('#valid_from').datetimepicker({
         timepicker:false,
         closeOnDateSelect:false,
         format:'m-d-Y',
         changeMonth: true,//this option for allowing user to select month
         changeYear: true, //this option for allowing user to select from year range
         minDate: 0,
         onChangeDateTime: function(dp,$input){
             startDate = $("#valid_from").val();
         }

     });

    $('#valid_to').datetimepicker({
         timepicker:false,
         closeOnDateSelect:false,
         format:'m-d-Y',
         changeMonth: true,//this option for allowing user to select month
         changeYear: true, //this option for allowing user to select from year range
         minDate: 0, 
         onClose: function(current_time, $input){
            var endDate = $("#valid_to").val();
            if(startDate>endDate){
                   alert('Please select correct date');
            }
         }

     });

});

使用属性调用P类:

class P:
    def __init__(self, x):
        self.x = x

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

    @x.setter
    def x(self, x):
        if x < 0:
            self.__x = "Negative"
        else:
            self.__x = "Positive"

这是我的问题,我不明白为什么在Python 2.7中不执行setter但是,如果你在Python3编辑器中检查这个代码,则运行print&#34; Positive&#34;。我该怎么办?

1 个答案:

答案 0 :(得分:0)

如果没有继承Python 2中的object,您就会获得classobj旧版“经典版”。类,而不是新的样式类。

新式类,即在Python 2中明确继承自object的类,支持描述符。在python 3中,这种继承是隐式的。

简而言之,继承自object