Python_面向对象

一.面向对象技术简介

  • 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
  • 方法:类中定义的函数。
  • 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
  • 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
  • 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
  • 局部变量:定义在方法中的变量,只作用于当前实例的类。
  • 实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用 self 修饰的变量。
  • 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
  • 实例化:创建一个类的实例,类的具体对象。
  • 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

和其它编程语言相比,Python 在尽可能不增加新的语法和语义的情况下加入了类机制。

Python中的类提供了面向对象编程的所有基本功能:类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法。

对象可以包含任意数量和类型的数据。

注意:

类的名称,首字母最好使用大写字母

类的基本作用:封装

类的内部不能调用,和使用方法

二.创建一个类

代码段

class Student():
    name = ''
    age = 0
    
    def print_file(self):
        print('name:' + self.name)      # 调用类里面的方法,参数需要加上self
        print('age:' + str(self.age))
student = Student()     # 实例化

student.print_file()        # 调用类里面的方法

  输出结果

name:
age:0

  

三.调用类

在另一个模块下调用类

代码段

from createObject import Student     # 调用类

student = Student()

student.print_file()

  输出结果

name:
age:0
name:
age:0

  

四.构造函数

常识

# 类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起
# 类相当于模板,里面可以有很多不同的对象
# python魔法方法:__init__( )方法,被称为构造方法。__init__()方法的魔力体现在只要实例化一个对象,这个方法就会在对象被创建时自动调用。实例化对象时是可以传入参数的,这些参数会自动传入__init__()方法中,可以通过重写这个方法来自定义对象的初始化操作。

1.一个类里面,可存在多个对象

代码段

class Student():
    name = ''
    age = 0
 def do_homework(self):
        print('homework')

student1 = Student()
student2 = Student()
student3 = Student()

# 打印内存地址
print(id(student1)) 
print(id(student2))   # 查看内存地址
print(id(student3))

  输出结果:虽然输出结果是一样,但是内存地址不一样

1528568316032
1528568316256
1528568317936

2.使用构造函数,定义不同的对象

代码段

class Student():
    name = ''
    age = 0
    def __init__(self,name,age):     # __init__构造函数
        print("student")
        return None    # 增加return也只能返回None,否则为报错
    # 行为 与 特征
    def do_homework(self):
        print('homework')
student1 = Student('joy',18) # 如果不使用构造函数__init__,括号中传入实参就会报错

 输出结果:

student

注意:

函数中不加return,返回结果为None

 代码段

class Student():
    name = ''
    age = 0
    def __init__(self):     # __init__构造函数
        print("student")
student1 = Student()
a = student1.__init__()  # 没有return,返回结果为 None
print(a)

  输出结果

student   # 加了构造函数,python会自己调用构造函数
student
None

 构造函数,增加return,也只能返回None,否则会报错

原文地址:https://www.cnblogs.com/joy-sir/p/12591357.html