龙空技术网

python类与对象

大数据孔 127

前言:

现在兄弟们对“python函数和类的区别”大概比较看重,小伙伴们都想要学习一些“python函数和类的区别”的相关知识。那么小编在网络上搜集了一些关于“python函数和类的区别””的相关文章,希望姐妹们能喜欢,看官们一起来了解一下吧!

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

image-20210822201107678

1 类

1.1 定义类

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

小驼峰法

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

大驼峰法

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

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

1.2 类属性

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

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

1.3 类方法

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

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

2.1 创建对象

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

class DemoCode(object):    passA = 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 18print(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.__ageA = DemoCode()  # 类的实例化,创建对象。print(A.getname())#输出tim 18print(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):  passclass 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.ageA = 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函数和类的区别 #java类中的成员变量默认是公有的吗还是私有