python基础-----类和实例
创建简单的类和实例
在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())
python基础-----类和实例的更多相关文章
- python基础——类和实例
python基础——类和实例 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都 ...
- python基础——类名称空间与对象(实例)名称空间
python基础--类名称空间与对象(实例)名称空间 1 类名称空间 创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性 而类的良好总属性:数据属性和函数属性 其中类 ...
- Python基础-类
Python基础-类 @(Python)[python, python基础] 写在前面 如非特别说明,下文均基于Python3 摘要 本文重点讲述如何创建和使用Python类,绑定方法与非绑定方法的区 ...
- Python基础-类变量和实例变量
Python基础-类变量和实例变量 写在前面 如非特别说明,下文均基于Python3 大纲: 1. 类变量和实例变量 在Python Tutorial中对于类变量和实例变量是这样描述的: Genera ...
- Python 面向对象基础(类、实例、方法、属性封装)
python是面向对象语言,一切皆对象. 面向过程: 变量和函数. “散落” 在文件的各个位置,甚至是不同文件中.看不出变量与函数的相关性,非常不利于维护,设计模式不清晰. 经常导致程序员,忘记某个变 ...
- Python - 001 - 类与实例间属性的理解
Python是个很灵活的语言,光看它的类和实例间属性的访问机制就可以看出这一点,不过这一点还真的不好理解,做了些测试之后我的理解是这样的: 实例在访问class属性时,先检索自己的names, 如果有 ...
- python之---类和实例
类和实例: 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但 ...
- Python面向对象-类、实例的绑定属性、绑定方法和__slots__
绑定属性 从之前的文章中,我们知道python是动态语言——实例可以绑定任意属性. 那如果实例绑定的属性和类的属性名一样的话,会是什么情况呢? >>> class Student(o ...
- python基础--类的方法
一:类的方法说明 类的方法分为实例方法,析构方法,构造方法,类方法,静态方法,属性方法,等等 类方法和静态方法都可以被类和类实例调用,类实例方法仅可以被类实例调用 类方法的隐含调用参数是类,而类实例方 ...
随机推荐
- Mac下如何生成SSH Key-使用GitLab
步骤1.检查是否已经存在SSH Key 打开电脑终端,输入以下命令: ls -al ~/.ssh 会出现两种情况 步骤2. 生成/设置SSH Key 继续上一步可能出现的情况 (1)情况一:终端出现文 ...
- emacs简易配置
(setq-default inhibit-startup-message t tab-width 4 c-basic-offset 4 indent-tabs-mode t) (tool-bar-m ...
- 【Mac进销存管理软件】Daily Sales Pro Mac
[简介] Daily Sales Mac版是Mac平台上的一款进销存软件,库存管理系统.Daily Sales Mac版是一款易于使用的进出库存管理软件,让您及时了解库存状况.销售收入.采购成 ...
- Tornado基于MiddleWare做中间件
详细代码如下: 在app.py里添加 # -*- coding:utf-8 -*- from tornado.ioloop import IOLoop from tornado.web import ...
- python 函数动态参数,名称空间,global,nonlocal
##################################总结######################################动态参数 *args:位置参数动态传参,接收到的是元 ...
- bzoj千题计划324:bzoj5249: [2018多省省队联测]IIIDX(线段树)
https://www.lydsy.com/JudgeOnline/problem.php?id=5249 把树建出来 如果所有的d互不相同,后续遍历即可 现在有的d相同 将d从小到大排序,考虑如何将 ...
- HDU 6374(拼三角形 **)
题意是在给定的线段长中挑选出能拼成三角形的最长的三条边,输出三角形的周长.先对所有边排序,从大到小,满足两较短边之和大于第三边就输出,若从未输出过就输出 -1 #include <iostrea ...
- [Android] Android 使用 Greendao 操作 db sqlite(1)-- 直接在MainActivity中调用
继续接上文: Android 使用 Greendao 操作 db sqlite 布局文件: activity_test_green.xml <?xml version="1.0&quo ...
- Web服务调试可用,发布之后访问出错
今天重装了系统,然后发现之前的Web服务DataService不能用了.将其设置为启动项,运行的结果是 跟踪发现,是mysql.data.dll的版本不对.所以要找到所有版本不对的该dll,将其替换成 ...
- vim学习之改头换面(基础配置)
还记得在线有个维护博客园的学长说过,这网站的前端做的贼丑,今日一看果真如此.其实我想说毕竟干货多,没有那么多花花肠子.下面开始进入正题. 在入坑了sublime.vscode.atom.notepad ...