了解 Python 中的 类?

Understand classes in Python?

我必须定义一个class Vehicle。 class的每个对象都有两个属性,license(车牌)和year(建造年份),以及return这些属性的两个方法。

此外,我必须定义一个 class Car,一个从 Vehicle 派生的 class,它还有两个属性,dis ( displacement)和max(车内最大人数),用方法知道后两者。

这是我尝试编写的代码:

class vehicle:
  def __init__(self,License_plate,Year):
    self.license = License_plate
    self.year = Year
  def year(self):
    return self.year
  def license(self):
    return self.license

class car(vehicle):
  def __init__(self,License_plate,Year,Displacement,maximum):
    veicolo.__init__(self, License_plate, Year)
    self.dis = Displacement
    self.max = maximum
  def displacement(self):
    return self.dis
  def max(self):
    return self.max



a = vehicle('ASDFE',1234)             #This is how I tried to run it 
a.year()                              #Here I got an ERROR :
a.license()                           #TypeError: 'int' object is not callable
b = car('ASDERTWWW',1234,7000,2340)
b.displacement()
b.max()

我在 Python 中遇到 class 的问题。我无法理解派生class.

的用法

您有一个同名的方法和变量。当您调用 a.year() 时,您正在尝试调用 year 变量。

一个解决方案是重命名其中一个(变量重命名为 _year 或方法重命名为 getYear)。或者,您可以直接访问变量。 python 中没有什么是私有的,所以你可以只做 >>> a.year -> 1234

在 python 中我们不需要 getter 和 setter。

class Vehicle(object):
    def __init__(self, year):
        self.year = year

class Car(Vehicle):
    def __init__(self, name, year):
        super(Car, self).__init__(year)
        self.name = name 

a = Vehicle(1995)
print a.year
b = Car("test", 1992)
print b.name
print b.year