前言
这应该才是大家心目中的面向对象编程叭(哈哈)
不过我们程序猿中很大一部分可能没有这个福利,当你真正学好了一门技术,能用他来赚钱养活自己,给身边的人更好的生活的时候,或许你就可以心安理得的“面向对象”了。
Python设计之初就是一门面向对象的语言,正因为如此,在Python中创建一个类的对象是很容易的,学过C++和Java的同学对面向对象应该比较了解,在面向对象编程中万物皆对象。更多具体的详细的信息大家可以查阅专业的书籍或者博文。
面向对象简介
- 类(class):用来描述具有相同属性和方法的对象的集合。
- 对象:对象是类的实例。
- 方法:类中定义的函数。
- 实例化:创建一个类的实例,类的具体对象。
- 类变量:类变量在整个实例化对象中是公用的,类变量定义在类中且在函数体之外,类变量通常不作为实例变量使用
- 数据成员:类变量或者实例变量用于处理类及其实例对象的相关数据。
- 方法重写:如果父类方法不能满足子类要求,可以对父类的方法进行改写。
- 局部变量:定义在方法中的变量,只作用于当前实例的类。
- 实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个self修饰的变量。
- 继承:一个派生类继承基类的字段和方法,使用其属性和方法,也可以有自己特有的属性和方法。
第一个面向对象程序
Cat是一个类,里面有两个方法:eat()和drink();tom是一个Cat的对象,他可以调用drink和eat方法。
在Python的类方法中,永远都有一个self参数。
class Cat:
def eat(self):
print("小猫爱吃鱼")
def drink(self):
print("小猫要喝水")
# 创建猫对象
tom = Cat()
tom.eat()
tom.drink()
print(tom)
addr = id(tom)
print(addr)
# 运行结果
小猫爱吃鱼
小猫要喝水
<__main__.Cat object at 0x7f4e631de828>
139974647081000
类的初始化方法
类的初始化方法是__init__()方法,使用类名创建对象时,会自动调用__init__()方法。__ init__()方法类似于C++中的构造函数,用于对象的初始化。
class Cat:
def __init__(self, new_name):
print("这是一个初始化方法")
# self.属性名 = 属性的初始值
# self.name = "Tom"
self.name = new_name
def eat(self):
print("%s爱吃鱼" % self.name)
# 使用类名()创建对象的时候,会自动调用初始化方法__init__
tom = Cat("Tom")
print(tom.name)
lazy_cat = Cat("大懒猫")
lazy_cat.eat()
# 运行结果
这是一个初始化方法
Tom
这是一个初始化方法
大懒猫爱吃鱼
类的对象回收方法和字符串方法
对象回收也就是:__ del __ ()方法,字符串方法是: __ str __ ()方法,这个名字可能起的不太对,但是就是这么个意思。__ del __ ()方法类似于析构函数,__ str __()方法是为了在开发中使用print输出对象变量时,能够打印自定义的内容。(__跟del中间没有空格的,这个编辑器有问题)