PYTHON 与 JAVASCRIPT 中的类

问题描述 投票:0回答:1

我正在研究这两种语言之间的区别,我想知道为什么我无法在不启动实例的情况下访问 javascript 类中的变量,但我可以在 python 中做到这一点

这是我们正在讨论的一个例子:

Python 类

    class Car: 
       all =[]
       def __init__(self, name):
          self.name = name

          Car.all.append(self)

       def get_car_name(self):
          return self.name
 
        
        
    bmw = Car("BMW")
    mercedez = Car("MERCEDEZ")

    print(Car.all)

运行此代码会返回所有汽车的列表(这是我创建的实例) [<main.汽车对象位于0x0000022D667664E0>,<main.汽车对象位于0x0000022D66766510>]

JAVASCRIPT类

    class Car {
      all = [];
      constructor(name, miles) {
      this.name = name;
      this.miles = miles;

      this.all.push(this);
      }
     }

    let ford = new Car("ford", 324);
    let tesla = new Car("tesla", 3433);

    console.log(Car.all);

如果我使用此代码,console.log 将返回 未定义

在javascript中,如果我想获得所有的值,我必须使用这样的实例

console.log(ford.all);

这将仅返回创建的 ford 实例

[ Car { all: [Circular *1], name: 'ford', miles: 324 } ]

但是在Python中,如果我打印出一个实例,它会返回this

print(bmw.all)

[<__main__.Car object at 0x00000199CAF764E0>, <__main__.Car object at 0x00000199CAF76510>]

即使我调用了一个实例的全部,它也会返回创建的两个实例

javascript python class
1个回答
0
投票

您需要将其声明为静态:

class Car {
  static all = [];
  constructor(name, miles) {
  this.name = name;
  this.miles = miles;

  Car.all.push(this);
  }
 }

let ford = new Car("ford", 324);
let tesla = new Car("tesla", 3433);

console.log(Car.all);

© www.soinside.com 2019 - 2024. All rights reserved.