下面的Python脚本没有给出任何结果

时间:2018-12-19 04:27:10

标签: python

我在执行时(ctrl + B)在sublime text3中编写了以下python脚本,但未给出任何结果。

步骤1: 代码:

class Avengers(object):
  def __init__(self):
    print('hello')
    avenger1 = Avengers()
    avenger1.__init__(self)

第2步:

ctrl + B

第3步:

结果:

Repl已关闭

4 个答案:

答案 0 :(得分:2)

那是因为您只声明一个类,而不实例化它。 您的变量avenger1存在于 init 函数中,因此不会被调用。缩进在python中很重要。

尝试一下:

class Avengers(object):
  def __init__(self):
    print('hello')
if __name__ == "__main__":
  avenger1 = Avengers()

答案 1 :(得分:1)

您没有实例化该类。尝试类似的东西:

<script>
                    data = [{
                        name: "A",
                        value: 1,
                        value2: 2
                    }, {
                        name: "B",
                        value: 4,
                        value2: 5
                    }, {
                        name: "C",
                        value: 7,
                        value2: 9
                    }, {
                        name: "D",
                        value: 2,
                        value2: 7
                    }, {
                        name: "E",
                        value: 1,
                        value2: 1
                    }, {
                        name: "F",
                        value: 5,
                        value2: 2
                    }]

                    var margin = {
                        top: 35,
                        right: 20,
                        bottom: 20,
                        left: 30
                    },
                        width = 580 - margin.left - margin.right,
                        height = 260 - margin.top - margin.bottom;

                    var x = d3.scaleLinear()
                        .range([0, width])

                    var y = d3.scaleBand()
                        .rangeRound([0, height])
                        .padding(.3)

                    var xAxis = d3.axisTop(x);
                    // gridlines in x axis function
                    function make_x_gridlines() {
                        return d3.axisBottom(x)
                            .ticks(40)
                    }

                    var svg = d3.select("#barchart").append("svg")
                        .attr("width", 585)
                        .attr("height", 270)
                        .append("g")
                        .attr("transform", "translate(" + margin.left + "," + margin.top + ")");

                    x.domain([-10, 10])
                    y.domain(data.map(function (d) {
                        return d.name;
                    }));

                    svg.selectAll(".bar")
                        .data(data)
                        .enter().append("rect")
                        .attr("class", "bar")
                        .attr("x", function (d) {
                            return x(Math.min(0, d.value));
                        })
                        .attr("y", function (d) {
                            return y(d.name);
                        })
                        .attr("width", function (d) {
                            return Math.abs(x(d.value) - x(0));
                        })
                        .attr("height", 13);

                    svg.selectAll(".bar2")
                        .data(data)
                        .enter().append("rect")
                        .attr("class", "bar2")
                        .attr("x", function (d) {
                            return x(Math.min(0, -d.value2));
                        })
                        .attr("y", function (d) {
                            return y(d.name);
                        })
                        .attr("width", function (d) {
                            return Math.abs(x(-d.value2) - x(0));
                        })
                        .attr("height", 13);


                    //svg.append("g")
                    //    .attr("class", "x axis")
                    //    .attr('transform', 'translate(0,' + (height) + ')')
                    //            .call(xAxis);
                    svg.append("g")
                        .attr("transform", "translate(0," + height + ")")
                        .call(d3.axisBottom(x));

                    // add the X gridlines
                    svg.append("g")
                        .attr("class", "grid")
                        .attr("transform", "translate(0," + height + ")")
                        .call(make_x_gridlines()
                            .tickSize(-height)
                            .tickFormat("")
                        )

                    svg.append("g")
                        .call(d3.axisLeft(y));
                    //svg.append("g")
                    //    .attr("class", "y axis")
                    //    .append("line")
                    //    .attr("x1", x(0))
                    //    .attr("x2", x(0))
                    //    .attr("y2", height);


                    function type(d) {
                        d.value = +d.value;
                        return d;
                    }
                </script>

实例化此类时,它将为该类执行class Avengers(object): def __init__(self): print('hello') avenger1 = Avengers() avenger1.__init__(self) avengers = Avengers() # Initiates the class 函数。

答案 2 :(得分:0)

首先,让我修复代码

class Avengers(object):
 def __init__(self): 
    print('hello')
    avenger1 = Avengers()
    avenger1.init(self)

好的,在这里您创建了一个名为“复仇者联盟”的类。为什么它不产生任何东西?因为您永远不会初始化该类(创建对象)。

所以我们开始:

class Avengers(object):
 def __init__(self): 
    print('hello')
    avenger1 = Avengers()
    avenger1.init(self)

Avengers()

它将打印问候,但是,它是递归的。永不结束打印“你好”。因为每次初始化该类时,它都会一次又一次创建一个对象。 init 是特殊功能,因此,每次初始化类时,都会执行 init 函数。

也许您想要的是这样的

class Avengers(object):
 def __init__(self): 
    print('hello')

Avengers() 

您可以阅读的其他参考:https://www.sololearn.com/Play/Python

答案 3 :(得分:0)

先前的答案是正确的,但也请注意,其构造函数中的Avengers类正在初始化Avengers的另一个实例。

这意味着在创建“复仇者联盟”对象时,它正在创建另一个“复仇者联盟”对象,该对象正在创建另一个“复仇者联盟”对象,依此类推。

__init__函数陷入无限递归。

class Avengers(object):
  def __init__(self):
    print('hello')
    avenger1 = Avengers()   # this line triggers infinite recursion

    avenger1.__init__(self)

avengers = Avengers() # Initiates the class