python类与对象_python类和对象的区别

liftword3个月前 (02-17)技术文章17

在介绍python类与对象之前,首先需要了解面向过程编程面向对象编程两种程序设计方法。面向过程编程OPP(Procedure Oriented Programming),是一种以事物为中心的编程思想,强调的是结构化编程,函数是程序设计的核心,函数调用是关键。而面向对象编程OOP(Object Oriented Programming),是一种以对象为基础的编程思想,对象为类的实例,一个对象中包含了数据和操作数据的函数。python语言属于面向对象编程。

image-20210822201107678

1 类

1.1 定义类

在Python中使用class关键字来定义类,后边紧跟类名,并以冒号结尾。类名命名通常采用大驼峰式命名法。类的特性之一是继承,可以继承一个或多个基类,基类都写在类名后边的括号中。python3中,如果定义一个类时,没有特别明确继承哪个基类,都默认继承object类。

小驼峰法

变量一般用小驼峰法标识。驼峰法的意思是:除第一个单词之外,其他单词首字母大写。譬如int myStudentCount;

大驼峰法

相比小驼峰法,大驼峰法把第一个单词的首字母也大写了。常用于类名,函数名,属性,命名空间。譬如class DataBaseUser;

class 类名(基类列表):
  pass
class DemoCode(object):
  '类的定义'
  pass

1.2 类属性

属性可以理解为变量,类属性可以理解为类的变量,类属性又分为私有和公有,私有属性只可在类的内部访问,外部无法访问,这点可以类比函数的全局变量和局部变量。公有类属性可以通过类和对象进行访问。

class DemoCode(object):
  name='tim'
  __age=18 #私有属性
A=DemoCode() #类的实例化,创建对象。  
print(DemoCode.name,A.name)#输出tim tim
print(DemoCode.__age,A.__age)#报错,外部无法访问私有属性

1.3 类方法

方法可以理解为函数,类方法可以理解为类的函数,类方法要用装饰器@classmethod来标识。对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数,能够通过类和对象进行访问。

class DemoCode(object):
  name = 'tim'
  __age = 18  # 私有属性
  @classmethod
  def getname(cls):
      return cls.name
A = DemoCode()  # 类的实例化,创建对象。
print(DemoCode.getname(), A.getname())  # 输出tim tim

2 对象

2.1 创建对象

对象是类的实例,类是对象的模板。创建对象类似函数调用的方式,直接类名后加括号,括号内为对象的属性。

class DemoCode(object):
    pass
A = DemoCode()  # 类的实例化,创建对象。

2.2 对象的属性

对象的属性就是对象的变量,也叫实例变量。python中一般采用def __ init __(self):的特殊方法来对对象属性进行初始化。对象的属性也有私有和公有之分,公有对象的属性只能通过对象进行访问。

class DemoCode(object):
    def __init__(self):
        self.name='tim'
        self.__age=18 #私有属性
A = DemoCode()  # 类的实例化,创建对象。
print(A.name)#输出tim 18
print(A.__age)#报错
print(DemoCode.name)#报错

2.3 对象的方法

对象的方法就是对象的函数,也叫实例方法。其与普通函数的区别就是第一个参数必须是对象本身,一般以self表示。在对象的方法被调用的时候,不需要提供与self参数相对应的参数。对象的方法只能通过对象进行访问。

class DemoCode(object):
    def __init__(self):
        self.name='tim'
        self.__age=18 #私有属性
    def getname(self):
        return self.name,self.__age
A = DemoCode()  # 类的实例化,创建对象。
print(A.getname())#输出tim 18
print(DemoCode.getname())#报错

3 其他

3.1 类的特性

  • 封装封装的意思可以理解为隐藏一切可以隐藏的实现细节,只向外界暴露(提供)简单的编程接口。类的定义就是封装,它把属性和方法都封装在内部,外界在访问的时候只需知道属性和方法的名字即可。
class DemoCode(object):
  name='tim'
  age=18 
  print(DemoCode.name)#通过类名.属性名的方式访问
  print(name)#报错,外部无法直接访问
  • 继承继承就是从另一个类继承属性和方法,从而减少重复代码的编写。定义的新类称为子类,被继承的类称为基类、父类或超类。子类除了继承基类提供的属性和方法之外,还可以定义自己特有的属性和方法,所以子类比父类拥有更多的能力。
class DemoCode(object):#object就是所有类的基类
  pass
------------------------------
class Person(object):
  pass
class Student(Person):#继承person这个基类
  pass
  • 多态多态就是多种形态,类作为模板只有一个,但是对象可以有多个,每个对象都有一种形态。
class Animal: 
  def kind(self): 
    print("i am animal")
class Dog(Animal): 
  def kind(self): 
    print("i am a dog")
class Cat(Animal): 
  def kind(self): 
    print("i am a cat")
class Pig(Animal): 
  def kind(self): 
    print("i am a pig")
----------------------
d = Dog()#类的多态
c = Cat()
p = Pig()

3.2 公有和私有

公有属性和方法能被外界所访问。私有属性和方法只能在内部使用,不能被外界所访问。在私有属性和方法的名字前加上两个下划线__,就可以将属性和方法变成私有成员。

class DemoCode(object):#object就是所有类的基类 
  name='tim'  
  __age=19  
  def __getname(self):    
    return self.name  

3.3 魔法方法

魔法方法是python内部已经定义好的,开头和结尾都有双下划线的方法。这些方法在进行特定的操作时会自动被调用,它们是Python面向对象下智慧的结晶。python的魔法方法有很多,本文主要说一下__ init __ 方法,__ init __方法的作用就是对类的属性进行初始化,方便后续调用。

class DemoCode(object): 
  def __init__(self,name,age): 
    self.name=name        
    self.age=age     
  def getname(self):   
    return self.name,self.age
A = DemoCode('tim',18)  # 创建对象,自动执行类中的 __init__ 方法
print(A.getname())#输出('tim', 18)

3.4 静态方法

静态方法可以理解为普通的函数,只不过定义在类的内部,由类进行调用。静态方法无默认参数,通过装饰器@staticmethod标识。

class DemoCode:   
  @staticmethod    
  def static_method(a,b,c):        
    return(a+b+c)
#调用方法
DemoCode.static_method(1,2,3)#输出6

3.5 装饰器

  • @property@property装饰器的作用就是把类内方法当成属性来使用,也就是说之前是DemoCode.getname()的调用方法变为DemoCode.getname的方式。
class DemoCode: 
  def __init__(self,name,age): 
    self.name=name 
    self.age=age
  @property 
  def getname(self): 
    return self.name,self.age 
#调用方法
A = DemoCode('tim',18) 
# 类的实例化,创建对象。
print(A.getname)#输出('tim', 18)
print(A.getname())#报错
  • @staticmethod
  • @classmethod

相关文章

python极简教程:对象的方法_python对象的含义

这一场,主讲python的面向对象的第二部分—— 对象的方法 。目的:掌握Python对象的五个核心方法。init和new讲解之前,先上一段代码class Demo: def __init__...

python初识对象_python对象编程

使用对象组织数据1.在程序中设计表格,我们称之为:设计类(class)class Student: name = None # 记录学生姓名2.在程序中打印表格,我们称之为:创建对...

详细介绍一下Python中的类与对象_python对象和类的关系

类和对象是面向对象编程的两个核心概念,而Python作为一门支持面向对象的编程语言,也是需要通过类和对象来实现代码的组织和封装的,下面我们就来详细介绍一下Python中的类与对象,来帮助大家一起了解它...

Python 类和对象的概念_python中类和对象的区别

前言在面向对象的编程范式中,类和对象是两个核心概念。它们是构成程序逻辑的基础单元,也是实现代码复用和模块化的关键。Python作为一种高级编程语言,对面向对象编程提供了良好的支持。本文将深入探讨Pyt...

一文了解 Python 中的面向对象编程

Python 是一种多功能编程语言,支持多种编程范例,包括面向对象编程 (OOP) 和过程编程。这种灵活性使开发人员可以根据项目的具体需求选择最合适的范例,结合每种方法的优势来实现最佳结果。Pytho...