首页 > 代码库 > python类与对象基本语法

python类与对象基本语法

本文和大家分享的主要是python中类与对象相关内容,一起来看看吧,希望对大家学习python有所帮助。

面向对象编程的2个非常重要的概念:类和对象。

对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念——类。

类就相当于制造飞机时的图纸,用它来进行创建的飞机就相当于对象。

定义一个类

class person:

age=10

#下面sex没有进行初始化是会报错的

#sex

name="intsmaze"

def getPersonInfo(self):

print("age is %d;name is %s"%(self.age,self.name))

必须要进行tab缩进来区分类的成员,同时类的属性必须指定一个值,否则会报NameError: name ’_person__age’ is not defined错误。

创建类的对象

vi demo.py

class person:

age=10

name="intsmaze"

def getPersonInfo(self):

print("age is %d;name is %s"%(self.age,self.name))# 创建对象

ly=person()# 调用对象的getPersonInfo方法

ly.getPersonInfo()# 访问属性

print(ly.age)

python demo.py

age is 10;name is intsmaze10

创建对象的格式为对象名 = 类名()

这里的nameage都是 公有 的,可以直接在类外通过对象名访问,如果想定义成 私有的,则需在前面加2个下划线 即’__’

vi demo2.py

class person:

__age=10

__name="intsmaze"

def getPersonInfo(self):

print("age is %d;name is %s"%(self.__age,self.__name))

ly=person()

ly.getPersonInfo()

print(ly.__age)

python demo2.py

age is 10;name is intsmaze

Traceback (most recent call last):

File "class2.py", line 9, in <module>

print(ly.__age)

AttributeError: person instance has no attribute ’__age’

私有属性是不能够在类外通过对象名来进行访问的。在Python中没有像C++publicprivate这些关键字来区别公有属性和私有属性,它是以属性命名方式来区分,如果在属性名前面加了2个下划线’__’,则表明该属性是私有属性,否则为公有属性(方法也是一样,方法名前面加了2个下划线的话表示该方法是私有的,否则为公有的)。

类的方法

在类中可以定义一些方法,定义方法采用 def 关键字,在类中定义的方法至少会有一个参数,一般以名为 self 的变量作为该参数(用其他名称也可以),而且需要作为第一个参数。

vi demo3.py

class person:

__age=18

def getPersonInfo(self):

print("age is %d"%self.__age)

def getPersonInfo2(self,age):

if(self.__age<age):

print("too old")

else:

self.__age=age

print("age is %d"%self.__age)

ly=person()

ly.getPersonInfo()

ly.getPersonInfo2(20)

ly.getPersonInfo2(10)

python中没有重载的概念,即不能方法重载。

python demo3.py

age is 18

too old

age is 10

所谓的self,可以理解为自己。可以把它当做C++中类里面的this指针一样理解,就是对象自身的意思,在用某个对象调用该方法时,就将该对象作为第一个参数传递给self

类的构造器

vi demo4.py

class person:

__age=10

__name="intsmaze"

def __init__(self):

self.__age=20

self.__name="liuyang"

def getPersonInfo(self):

print("age is %d;name is %s"%(self.__age,self.__name))

ly=person()

ly.getPersonInfo()

python demo4.py

age is 20;name is liuyang

对象在默认调用 __init__() 方法的时候传递一些参数

vi demo5.py

class person:

__age=10

__name="intsmaze"

#def __init__(self):

#       self.__age=20

#       self.__name="liuyang"

def __init__(self, age, name):

self.__age = age

self.__name = name

def getPersonInfo(self):

print("age is %d;name is %s"%(self.__age,self.__name))

#ly=person()#ly.getPersonInfo()

ly=person(100,"hello")

ly.getPersonInfo()

python demo5.py

age is 100;name is hello

构造器也不能重载,如果把上面的注释去掉,调用脚本将会报错。 构造器方法,在创建一个对象时默认被调用,不需要手动调用。

析构

创建对象时,默认调用 构造方法 ;当删除一个对象时,同样也会默认调用一个方法,这个方法为 析构方法 

vi dem6.py

创建对象#encoding=utf-8class Animal():

构造方法

def __init__(self):

print ’---构造方法被调用---’

析构方法

def __del__(self):

print ’---析构方法被调用---’

创建对象

dog = Animal()

删除对象del dog

python dem6.py

---构造方法被调用------析构方法被调用---

来源:博客园


python类与对象基本语法