Python中面向对象之类
类的构造函数
-
Python中用
def__init__(self,[])
方法来定义构造函数,主要用来在创建对象时初始化对象 -
Python中用
def__del__()
方法定义析构函数
1. 构造函数案例
class complex:
def __init__(self,real,imag): #此处要记得写参数self
self.r = real
self.i = imag
print("构造函数被调用")
x = complex(3.0,-4.5)
print(x.r,x.i)
2. 析构函数
案例
class complex:
def __init__(self,realpart,imagpart):
self.r = realpart
self.i = imagpart
def __del__(self):
print("调用析构函数,此事之后complex不存在了")
x = complex(3.0,-4.5)
print(x.r,x.i)
del x
类成员与实例成员
-
实例属性一般是指在构造函数
__init__()
中定义的,定义和使用时必须以self作为前缀;类属性是在类中所有方法之外定义的数据成员 python中的构造函数是用来初实例化实例成员。案例:
class bike:
price = 500#类成员
def __init__(self,color): #color是实例成员
self.color = color
a = bike("blue")
a.price
print(a.color)
print(a.price)
类的公有成员和私有成员
- 下Python程序中定义的成员变量和方法默认都是公有成员,类之外的任何代码都可以随意访问这些成员。如果在成员变量和方法名前面加上两个下划线“——”左前缀,则访问变量和方法就是类的私有成员
案例
#访问私有成员
class T:
def __init__(self,a,b):#定义一个构造函数,有两个变量a,和b
self.__a = a#此处加了下划线'__'表示私有成员
self.__b = b
def add(self): #定义一个求和函数
self.__sum =self.__a + self.__b
return self.__sum
def printsum(self):
print(self.__sum)
test = T(2,3)#给T类里的变量a,b 赋值
s = test.add()
print(s)
test.printsum()
类的私有成员和受保护成员
-
_xxx
:这样的对象叫保护成员,不能用 "from 模块 import * "导入,只有类对象和子类对象能访问这些成员 -
__xxx__
:这样的对象是系统的保护成员 -
__xxx
:这样的对象时类中的私有成员,只有类对象自己访问,子类对象也不能访问到这个成员,但在对象外部可以通过“对象名._类名__xxx
”这样的特殊方式访问
案例
class T:
def __init__(self,x=1,y=2): #定义私有方法 __init__()
self._x = x #保护成员
self.__y = y #私有成员
def setvalue(self,x,y): #定义普通成员方法setvalue()
self._x = x
self.__y = y
def show(self): #定义普通成员方法show()
print(self._x)
print(self.__y)
a = T()
print(a._x)
print(a._T__y) #在外部访问对象的私有成员