编程范式:面向过程编程、面向对象编程(OPP)、面向函数编程。
最简单的面向对象编程,self是为了给类传入参数liming:
class man():
def say(self):
print("Hello!")
liming = man() #类实例化成对象
liming.say() #本质上是man.say(),self接收liming
#输出
Hello!
如何给类传入参数?在类中有一个__init__函数,添加如下代码:
class man(): #man是类名
def __init__(self,name): #构造函数,在实例化时做一些类初始化的工作
self.name = name #实例变量,赋值给实例
def say(self):
print("%s,say hello!" % (self.name))
liming = man("liming")
liming.say()
zhangsan = man("zhangsan")
zhangsan.say()
#输出
liming,say hello!
zhangsan,say hello!
self.name = name就是实例变量(静态属性),赋值给实例,作用域是实例本身。
class man():
def __init__(self,name):
self.name = name
def say()就是类的方法(动态属性),类的功能。
class man():
def __init__(self,name):
self.name = name
def say(self):
print("%s,say hello!" % (self.name))
version就是类变量,它可以不需要实例化就调用,也可以实例化进行调用。(如果出现实例与类中重名问题,先找实例变量,再找类变量)
class man():
version = "1.0.0"
def __init__(self,name):
self.name = name
print(man.version)
liming = man("liming")
print(liming.version)
类变量的用途:大家共有的属性,节省内存。如果生成上千上万个实例的话,实例变量会被创建上千上万个,虽然达到的效果一样。
class man(): version = "1.0.0" def __init__(self,name,version= "1.0.0"): self.name = name
在实例释放、销毁的时候执行的,通常用于做一些收尾工作,如关闭数据库连接、关闭打开的临时文件等。
class man():
def __del__(self):
pass
私有:只有类中内部可以访问,外部不能访问。
不是私有属性/方法的话,外部是可以进行访问和修改的。
class man():
def __init__(self,name):
self.name = name
self.passwd = "123456"
liming = man("liming")
print(liming.passwd)
liming.passwd="abc123456"
print(liming.passwd)
#输出
123456
abc123456
私有属性/方法在属性名/方法名前面加上__符号,不允许类外进行访问和修改,只能通过类中的函数对私有属性进行修改。
class man():
def __init__(self,name):
self.name = name
self.__passwd = "123456"
def changepass(self,newpasswd):
self.__passwd = newpasswd
print(self.__passwd)
liming = man("liming")
#没有liming.passwd/liming.__passwd属性
#只能通过一下changepass方法来查看或修改内部属性
liming.changepass("abc123456")
#输出
abc123456
原文:https://www.cnblogs.com/endust/p/12316752.html