对象
1.面向对象( oop )
Python作为一门面向对象语言,一切操作都是通过对象进行的
- 面向过程语言:
1. 将程序分解为一个个的步骤来完成
2. 编程方式符合人类思想,编写相对简单
3. 但这种编程方式往往只适用于一个功能,相似功能也难以实现所以可复用性低,并且难以维护 - 面向对象语言:
1. 关注的是对象,不关注过程
2. 对于面向对象语言来说,一切皆对象
3. 面向对象编程思想,将所用功能统一保存到对象中
4. 这种编程思想易于阅读,理解,并且比较易于维护,容易复用 但这种方式编写,相对来说不符合人类思维,编写稍微麻烦点
2.类的简介和定义
介绍类,创建简单的类,用类创建实例对象,instance( )
a = int(10) # 创建一个int类的实例
s = str('hello') # 创建一个str类的实例
# 等价于:a=10,s = 'hello'
b= 20
print( a , type(a) )
print( b , type(b) )
# 类是一个用来创建对象的对象
# 类是type类型的对象,定义类实际上就是定义了一个type类型的对象
# 定义一个简单的类
# class 类名 [ ( 父类 ) ] :
# 代码块
# 类名要使用大驼峰命名法
class MyClass :
pass
print(MyClass)
# <class '__main__.MyClass'>
print( type(MyClass) )
# <class 'type'>
# 使用类创建对象的简单流程:
# 1. 创建一个变量mc_1
# 2. 在内存中创建一个新对象
# 3. 将新对象的id赋值给变量
mc_1 = MyClass( ) # mc_1是MyClass的实例
mc_2 = MyClass( )
mc_3 = MyClass( )
print(mc_1 , type(mc_1))
# instance( ) 用来检查一个对象是否是一个类的实例
result = isinstance(mc_1,MyClass)
result = isinstance(b,int)
print(result)
# 可以向对象中添加变量,对象中的变量称为属性
# 语法:对象.属性名 = 属性值
# 这个变量(属性)存储在对象中而不是全局中
mc_1.name='yt'
print(mc_1.name)
3.对象的初始化
类的属性和一些特殊方法
class Person :
# 在类中可以定义一些以__开头,__结尾的特殊方法(魔术方法)
# 特殊方法不需要自己调用,它会在特殊时刻自己调用
# init会在对象创建以后立即执行
# init是用来向新建的对象中初始化属性的
# 调用类创建对象时,对象后的参数会自动传递给init( )方法
def __init__ (self,name) : # init(初始化)是特殊方法
# 优点是使程序更严谨,如果创建对象时不传name就会报错
# 也简化了程序,不用每次创建对象后再给该对象的name赋值
self.name = name
def say_hello (self) :
print('hello',self.name)
p1 = Person('D')
# 使用类创建对象的流程:
# 1. 创建一个变量p1
# 2. 在内存中创建一个新对象
# 3. __init__方法执行
# 4. 将新对象的id赋值给变量
p2 = Person('F')
# p1 = Person( )
# p1.name = 'Q'
# p2 = Person( )
# p2.name = 'W'
p1.say_hello( )
p2.say_hello( )
4.类的基本结构
class 类名 [(父类)] :
公共属性...
def __init__(self,...) :
...
def mothon_1(self,...) :
...
. . .
———————————————————————————————————————————————————
class ClassName(object):
"""docstring for ClassName"""
def __init__(self, arg):
super(ClassName, self).__init__()
self.arg = arg
5.小练习
class Dog :
'''
表示狗的类
'''
def __init__(self, name,age,gender,height) :
self.name = name
self.age = age
self.gender = gender
self.height = height
def run( self ) :
print('%s 跑过来了!'%self.name)
def barking( self ) :
print(self.height,'米高的',self.name,'在叫!')
def eat( self ) :
print(self.age,'岁的',self.gender,'狗',self.name,'在吃东西!')
dog_1 = Dog('小黑','2','公','0.4')
dog_2 = Dog('小白','1','公','0.2')
dog_3 = Dog('点点','4','母','0.7')
dog_1.run( )
dog_2.eat( )
dog_3.barking( )