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基础--类的方法
一:类的方法说明 类的方法分为实例方法,析构方法,构造方法,类方法,静态方法,属性方法,等等 类方法和静态方法都可以被类和类实例调用,类实例方法仅可以被类实例调用 类方法的隐含调用参数是类,而类实例方 ...
随机推荐
- STM32 ------ 串口 数据位长度 和 奇偶校验位
USART_InitStructure.USART_WordLength 的值是数据位长度+一个奇偶校验位(如果无奇偶校验则不加一)
- 网络编程基础【day09】:socketserver使用(九)
本节内容 1.概述 2.socketserver类型 3.创建socketserver步骤 4.简单的代码实现 一.概述 我们之前的用户都是不支持多并发的,所以我们现在需要一个支持多用户,实现一个并发 ...
- 2、JPA-Annotation
注解放在类属性上不生效时可放在get方法上试试,原因未知 @Entity /** * @Entity 该Java类为实体类,将映射到数据库表.如声明一个实体类 Customer,它将映射到数据库中的 ...
- Hudson持续集成管理平台搭建
IP: 10.0.70.106 8G 内存 (Hudson 多 个 工程 在 同 时 构建 的情况下 比 较耗内存) 环 境: CentOS 6.5 . JDK7 注:Hudson 只是一个持续集成 ...
- SpringMVC+Shiro不拦截静态资源配置
最近在弄SpringMVC与Shiro整合,发现如果将DispatcherServlet拦截 *.do这样的URL,就不存在访问不到静态资源的问题.如果DispatcherServlet改为拦截“/” ...
- 关于react上线系列问题及解决方案
近使用react做了一个音乐播放器小项目,在线下开发完成后,测试一切都没有问题,于是打算打包上线.首先注册了一个新浪云账号,然后创建了一个SAE应用实例,再然后就照着新浪云给出的远程仓库进行push. ...
- 042、用volume container 共享数据 (2019-03-05 周二)
参考https://www.cnblogs.com/CloudMan6/p/7188479.html volume container 是专门为其他容器提供 volume 的容器,他提供的卷也可以 ...
- 自学python 3.
1.name = "aleX leNb" 1.a = name.strip() print(a) 2.a = name.lstrip('al') print(a) 3.a = na ...
- threading.local学习
多线程抢占问题 import time import threading obj = 5 def task(arg): global obj obj = arg time.sleep(1) print ...
- 指定so动态链接库连接器
在学习x86_64汇编时, 发现一旦使用glibc库函数, 如printf时, 一般是需要使用为ld传递命令行参数-lc来动态连接libc.so的, 但是, 生成的可执行文件却无法运行: 气煞我也! ...