创建简单的类和实例

在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基础-----类和实例的更多相关文章

  1. python基础——类和实例

    python基础——类和实例 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都 ...

  2. python基础——类名称空间与对象(实例)名称空间

    python基础--类名称空间与对象(实例)名称空间 1 类名称空间 创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性 而类的良好总属性:数据属性和函数属性 其中类 ...

  3. Python基础-类

    Python基础-类 @(Python)[python, python基础] 写在前面 如非特别说明,下文均基于Python3 摘要 本文重点讲述如何创建和使用Python类,绑定方法与非绑定方法的区 ...

  4. Python基础-类变量和实例变量

    Python基础-类变量和实例变量 写在前面 如非特别说明,下文均基于Python3 大纲: 1. 类变量和实例变量 在Python Tutorial中对于类变量和实例变量是这样描述的: Genera ...

  5. Python 面向对象基础(类、实例、方法、属性封装)

    python是面向对象语言,一切皆对象. 面向过程: 变量和函数. “散落” 在文件的各个位置,甚至是不同文件中.看不出变量与函数的相关性,非常不利于维护,设计模式不清晰. 经常导致程序员,忘记某个变 ...

  6. Python - 001 - 类与实例间属性的理解

    Python是个很灵活的语言,光看它的类和实例间属性的访问机制就可以看出这一点,不过这一点还真的不好理解,做了些测试之后我的理解是这样的: 实例在访问class属性时,先检索自己的names, 如果有 ...

  7. python之---类和实例

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

  8. Python面向对象-类、实例的绑定属性、绑定方法和__slots__

    绑定属性 从之前的文章中,我们知道python是动态语言——实例可以绑定任意属性. 那如果实例绑定的属性和类的属性名一样的话,会是什么情况呢? >>> class Student(o ...

  9. python基础--类的方法

    一:类的方法说明 类的方法分为实例方法,析构方法,构造方法,类方法,静态方法,属性方法,等等 类方法和静态方法都可以被类和类实例调用,类实例方法仅可以被类实例调用 类方法的隐含调用参数是类,而类实例方 ...

随机推荐

  1. noi.openjudge 1.13.15

    http://noi.openjudge.cn/ch0113/15/ 总时间限制:  1000ms 内存限制:  65536kB 描述 输入一个长度为N的整数序列 (不多于128个整数),每个整数的范 ...

  2. Java泛型、List接口整理

    泛型 package com.oracle.demo01; import java.util.HashMap; import java.util.Iterator; import java.util. ...

  3. nginx的rewrite指令

    需求:我们在接收到一个/api/upload 开头的url的时候 要转发到另外一个地址.但是又不想追加/api/upload  只想追加/upload 地址. Nginx提供了rewrite指令,用于 ...

  4. 来自Composer中文网安装composer指南

    如果有需要安装composer的童鞋可以参考这个文章配置自己的composer https://pkg.phpcomposer.com/#how-to-install-composer 这里可能会出很 ...

  5. golang goroutine

    goroutine-介绍 1)进程就是程序程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位2)线程是进程的一个执行实例,是程序执行的最小单元,它是比进程更小的能独立运行的基本单位.3 ...

  6. bzoj千题计划312:bzoj2119: 股市的预测(后缀数组+st表)

    https://www.lydsy.com/JudgeOnline/problem.php?id=2119 题意:将给定数组差分后,求ABA形式的字串个数,要求|B|=m,|A|>0 1.后缀数 ...

  7. Part-Seven

    1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.

  8. python2与python3 字符问题以及 字符编码 内容总结

    python2与python3默认编码: python2:gbk                   print( u'上' )     操作系统也是 gbk    python3:unicode p ...

  9. Spring Boot - Error creating bean with name 'dataSource' defined in class path resource

    看起来像最初的问题是与自动配置. 如果你不需要数据源,只需从自动配置过程中删除它: @EnableAutoConfiguration(exclude={DataSourceAutoConfigurat ...

  10. 细说shiro之五:在spring框架中集成shiro

    官网:https://shiro.apache.org/ 1. 下载在Maven项目中的依赖配置如下: <!-- shiro配置 --> <dependency> <gr ...