面向对象编程(Object Oriented Programming)
面向对象编程是一种编程方式,这种编程方式需要使用“对象”来实现
对象的特征:
1.世间万物皆对象
2.每个对象都是唯一的
3.对象具有属性和行为
4.对象具有状态
5.对象分为类对象和实例对象两大类
类对象是具有相同属性和行为的实例对象的抽象
类对象就是实例对象的模板,实例对象是由类对象创建出来的
此外,同一个类对象的所有实例对象如果具有相同的属性,表明它们属性的含义是相同的
面向对象编程的大体步骤:
1. 抽象出类对象
2. 抽象出类对象的属性
3. 抽象出类对象的行为(方法)
4. 根据类对象创建实例对象
5. 通过实例对象访问属性和方法
定义类对象的语法格式
class 类名(object)
#s属性与方法
其中,
1.类名由一个或多个单词组合而成,每个单词的首字母大写且其余字母全部小写,例如:SomeClass。
2.(object)表示该类对象继承自Python内置的类对象object,Python中所有的类对象都继承自一个统一的基类:object
初识类的方法:行为(方法)是类中特殊的函数。
猫具有的行为:跑,喵喵叫,吃东西
def run(self):
print("Cat is running.")
def miao(self):
print("Cat is miaoing.")
def eat(self):
print("Cat is eatting.")
初识属性
猫类具有的属性:
1.品种
2.昵称
3.年龄
4.健康状况等
class Cat(object):
def __init__(self,bread,name,age,health):
self.bread = bread
self.name = name
self.age = age
self.health = health
类的方法与函数的区别:
方法就是定义在类对象中的函数。方法与函数的区别在于:
1.定义方法时,方法的每一个形参表示调用该方法的实例对象,
第一个形参的名称通常是self,也可以是其它名称。
2.调用方法时,系统自动将调用该方法的实例对象作为实参传递给第一个形参。
第一个实参会传递给第二个形参,第二个形参会传递给第三个形参,依此类推
根据类对象创建实例对象的语法格式为:
类名([实参])
#根据类对象创建实例对象
cat = Cat("波斯猫","喵喵",1,"很好")
print(cat.breed)
print(cat.name)
print(cat.age)
print(cat.health)
cat.run()
cat.miao()
cat.eat()
实例属性
实例属性指的是实例对象所绑定的属性
绑定实例属性给实例对象绑定属性的方式由两种:
1.在类对象内部(方法中)
语法格式:self.属性名 = 属性值
推荐在特殊方法 init 中进行绑定,这样,在创建实例对象后就会自动调用特殊方法__init__ 对实例对象进行初始化,从而绑定实例属性。如果在其他方法中进行绑定,可能需要手动调用方法后才会绑定。
2.在类对象外部
Python是动态语言,所以,在实例对象创建后,可以对其动态地绑定属性
语法格式:实例对象。属性名 = 属性值
如果指定名称的实例属性已经存在,则是对实例属性进行修改
访问实例属性的方式有两种:
1、在类对象的内部(方法中)
语法格式:self.属性名
2、在类对象的外部
语法格式:实例对象.属性名
之所以添加前提"self"或"实例对象",是为了表现实例属性被哪个实例对象所绑定
class MyClass(object):
def __init__(self):
self.ia1 = 18
def do_sth1(self):
#在类对象内部(方法中)访问实例属性
print(self.ia1)
def do_sth2(self):
print(self.ia2)
def do_another(self):
#在类对象内部(方法中)绑定实例属性
self.ia2 = 56
def do_sth3(self):
print(self.ia3)
mc = MyClass()
mc.do_sth1()
>>>18
mc.do_another()
mc.do_sth2()
>>>56
#在类对象的外部绑定实例属性
mc.ia3 = 66
print(mc.ia3)
>>>66
mc2 = MyClass()
print(mc2.ia3)
实例对象.dict
可以获得该实例对象所绑定的所有属性及其值的字典
mc.__dict__
>>>{'ia1' : 18, 'ia2' : 56, 'ia3' : 88}
mc2.__dict__
>>>{'ia1' : 18}
3.类对象属性
类属性
类属性指的是类对象所绑定的属性
绑定类属性(给类对象绑定属性)的方式由两种:
1、在类对象的内部(方法外)
语法格式:属性名=属性值
2.在类对象的外部
Python是动态语言,所以,在类对象创建之后,可以对其动态地绑定属性。
语法格式:类对象.属性名 = 属性值
如果指定名称地类属性已经存在,则是对类属性进行修改