首页 > 编程 > Python > 正文

深入浅析Python的类

2020-02-15 21:58:09
字体:
来源:转载
供稿:网友

面向对象编程时,都会遇到一个概念,类,python也有这个概念,下面我们通过代码来深入了解下。

创建和使用类

class Dog():  def __init__(self, name, age):    self.name = name    self.age = age  def sit(self):    print(self.name.title() + " is now sitting.")  def roll_over(self):    print(self.name.title() + " rolled over!") my_dog = Dog('willie', 6)print("My dog's name is " + my_dog.name.title() + ".")print("My dog is " + str(my_dog.age) + " years old.") 运行结果:My dog's name is Willie.My dog is 6 years old.

class关键字:来定义一个类。类名通常首字母为大写。

__init__方法:特殊方法,每当实例类的时候都会运行。其中的形参self必不可少,而且必须位于最前面。

self形参:类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候

用不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身。

实例的方法是指定类名以及需要传入的实参。

要访问实例的属性或者调用方法,可使用句点表示法。

使用类和实例

class Car():  def __init__(self, make, model, year):    self.make = make    self.model = model    self.year = year    self.odometer_reading = 0 #<- here   def get_descriptive_name(self):    long_name = str(self.year) + ' ' + self.make + ' ' + self.model    return long_name.title()   def read_odometer(self):    print("This car has " + str(self.odometer_reading) + " miles on it.") my_new_car = Car('audi', 'a4', 2016)print(my_new_car.get_descriptive_name())my_new_car.read_odometer() 运行结果:2016 Audi A4

可以看到,我们给Car类的属性指定了默认值self.odometer_reading = 0。如果要修改它,我们可以通过实例直接访问它并修改,比如:my_new_car.odometer_reading = 23。或者通过方法修改属性的值。或者通过方法对属性的值进行递增。

class Car():  --snip--  #通过方法修改属性的值  def update_odometer(self, mileage):    self.odometer_reading = mileage   #通过方法对属性的值进行递增  def increment_odometer(self, miles):    self.odometer_reading += miles

继承

一个类继承另一个类时,他将自动获得另一个类的所有属性和方法;原有的类称为父类,新类称为子类。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。

现在我们有一个Car类如下

class Car():  def __init__(self, make, model, year):    self.make = make    self.model = model    self.year = year    self.odometer_reading = 0 #<- here   def get_descriptive_name(self):    long_name = str(self.year) + ' ' + self.make + ' ' + self.model    return long_name.title()   def read_odometer(self):    print("This car has " + str(self.odometer_reading) + " miles on it.")   def update_odometer(self, mileage):    self.odometer_reading = mileage   def increment_odometer(self, miles):    self.odometer_reading += miles            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表