创建简单的类和实例

在python中,首字母大写的名称指的是类,这个类定义中括号的内容是空的。

面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。

class Dog():  #首字母大写的名称代表的是类,类定义中的括号是空的
"""一次模拟小狗的简单尝试"""
def __init__(self, name, age): #_init_()是一个特殊的方法,每次创建新实例python都会运行它
"""初始化属性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("zs", 4) #定义两只小狗
your_dog = Dog("ls", 5) print("my dog's name " + my_dog.name.title() + "!")
print("your dog's name " + your_dog.name.title() + "!")
my_dog.sit()
your_dog.roll_over()

运行结果为:

my dog's name Zs!
your dog's name Ls!
Zs is now sitting.
Ls rolled over!

使用类和实例

class Car():
"""一次模拟汽车的简单常识"""
def __init__(self, make, model, year):
"""初始化描述汽车的属性"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_descriptive_name(self):
"""返回整洁的描述信息"""
long_name = str(self.year) + ' ' + self.model + ' ' + self.make
return long_name.title() #此处必须有返回值
def read_odometer(self):
"""打印一条汽车里程的消息"""
print("this car has " + str(self.odometer_reading) + " miles on it.")
new_car = Car('audi', 'a4', 3)
print(new_car.get_descriptive_name())
new_car.read_odometer()

运行结果为:

3 A4 Audi
this car has 0 miles on it.

修改属性的值

可以用三种方法修改属性的值;

(1)直接通过实例进行修改;

(2)通过方法进行设置;

(3)通过方法进行递增;

class Car():
"""一次模拟汽车的简单常识"""
def __init__(self, make, model, year):
"""初始化描述汽车的属性"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_descriptive_name(self):
"""返回整洁的描述信息"""
long_name = str(self.year) + ' ' + self.model + ' ' + self.make
return long_name.title() #此处必须有返回值
def read_odometer(self):
"""打印一条汽车里程的消息"""
print("this car has " + str(self.odometer_reading) + " miles on it.")
new_car = Car('audi', 'a4', 3)
new_car.read_odometer()
new_car.odometer_reading = 3 #直接修改属性的值
new_car.read_odometer()
class Car():
"""一次模拟汽车的简单常识"""
def __init__(self, make, model, year):
"""初始化描述汽车的属性"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_descriptive_name(self):
"""返回整洁的描述信息"""
long_name = str(self.year) + ' ' + self.model + ' ' + self.make
return long_name.title() #此处必须有返回值
def update_odometer_reading(self, meter): #此处添加一个方法,这个方法可以接受里程值,并进行存储。
self.odometer_reading = meter
def read_odometer(self):
"""打印一条汽车里程的消息"""
print("this car has " + str(self.odometer_reading) + " miles on it.") new_car = Car('audi', 'a4', 3)
new_car.update_odometer_reading(5) #调用方法,并传递实参5
new_car.read_odometer()

有时候需要将属性值递增特定的量,而不是将其设置为一个全新的值。

class Car():
"""一次模拟汽车的简单常识"""
def __init__(self, make, model, year):
"""初始化描述汽车的属性"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_descriptive_name(self):
"""返回整洁的描述信息"""
long_name = str(self.year) + ' ' + self.model + ' ' + self.make
return long_name.title() #此处必须有返回值
def incream_odometer_reading(self, meter): #此处添加一个方法,这个方法可以接受里程值,并将其加入到原有值。
self.odometer_reading += meter
def read_odometer(self):
"""打印一条汽车里程的消息"""
print("this car has " + str(self.odometer_reading) + " miles on it.") new_car = Car('audi', 'a4', 3)
new_car.incream_odometer_reading(5) #调用方法,并传递实参5
new_car.read_odometer()
new_car.incream_odometer_reading(5) #调用方法,再次传递实参5
new_car.read_odometer()

继承

一个类继承另一个类时,他将自动获得另一个类的所有属性和方法;原有的类称为父类,新的类称为子类;

class Car():
"""一次模拟汽车的简单常识"""
def __init__(self, make, model, year):
"""初始化描述汽车的属性"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_descriptive_name(self):
"""返回整洁的描述信息"""
long_name = str(self.year) + ' ' + self.model + ' ' + self.make
return long_name.title() #此处必须有返回值
def read_odometer(self):
"""打印一条汽车里程的消息"""
print("this car has " + str(self.odometer_reading) + " miles on it.")
class ELE(Car): #定义子类时必须在括号内指定父类的名称
"""d电动车的独特之处"""
def __init__(self, make, model,year):
"""初始化父类的属性"""
super().__init__(make, model, year) #super()是一个特殊函数,将父类和子类关联起来
my_ele = ELE('aa', 'ss',4)
my_ele.read_odometer()
print(my_ele.get_descriptive_name())

最新文章

  1. android onActivityResult无效或先执行或无回传问题
  2. 关于export 和 require(import)的一些技巧和常用方法
  3. free 命令
  4. UML教程首页(转载)
  5. 问题:-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "BlueView" nib but the view outlet was not set.
  6. 机器学习 —— 概率图模型(Homework: CRF Learning)
  7. 【SharePoint 文档管理解决方案设计系列一】文档使用分析
  8. 什么时候使用Shell
  9. ViewPager引导
  10. 笔记-linux下Qt5.3.2 静态编译
  11. CV和Resume的区别(转)
  12. 自由HTML5串行来到《HTML5具体解释Web开发的例子》连载(三)DOCTYPE和字符集
  13. 购物车css样式效果
  14. docker学习-常用命令1
  15. Duplicate entry '0' for key 'PRIMARY'
  16. 初学Python——Socket网络编程
  17. Sqlalchemy model 文件自动生成
  18. ip本地查询
  19. 前端 - js方式Ajax/ jquery方式Ajax / 伪 ajax /伪ajax 进阶方式
  20. Alpha冲刺报告(7/12)(麻瓜制造者)

热门文章

  1. ubuntu ------ 网络 ifconfig 不显示IP地址
  2. python自动化开发-[第十三天]-javascript
  3. go kafka
  4. Struts2_配置文件
  5. Python的命名空间及作用域
  6. twitter分布式主键id生成器
  7. css3 transition和animation的区别与联系
  8. 在.NET程序中实现HttpServer功能
  9. blackeye部署
  10. ASP.NET MVC+EF框架+EasyUI实现权限管理(附源码)