面向对象
(一)定义类class,和类的调用
#函数的定义和调用 def show(): print('this is a function') show() #class内部定义函数和调用 class Person(object): def show(self): print('this is a class') obj=Person() obj.show()
'''执行顺序: 1.执行init方法 2.执行具体调用方法 3.最后执行del方法 '''
实例属性
class Person(object): #针对类的初始化 def __init__(self,name,age):#name,age也叫属性,是赋予初始化的形式参数 #这个是实例化属性的过程,self代表类本身 self.name=name self.age=age def show(self): #格式化字符串输出更好看 print('my name is {name},我今年 {age}'.format(name=self.name,age=self.age)) #析构方法:清理 def __del__(self): print('执行结束') #实例化class,也是对init的初始化,即对init里边的形式参数赋值。最后再调用 obj=Person(name='zx',age='11') obj.show()
class Person(object): city='xian' #赋予类的全局变量 #针对类的初始化 def __init__(self,name,age):#name,age也叫属性,是赋予初始化的形式参数 #这个是实例化属性的过程,self代表类本身 self.name=name self.age=age def show(self): #格式化字符串输出更好看 print('my name is {name},我今年 {age},我是{city}的'.format(name=self.name,age=self.age,city=self.city)) #析构方法:清理 def __del__(self): print('执行结束') #实例化class,也是对init的初始化,即对init里边的形式参数赋值。最后再调用 obj=Person(name='zx',age='11') obj.show()
(三)类里边的参数
默认参数、动态动态参数的增加
class Person(object): #针对类的初始化 def __init__(self,name,age):#name,age也叫属性,是赋予初始化的形式参数 #这个是实例化属性的过程,self代表类本身 self.name=name self.age=age def show(self,sex='girl'): #格式化字符串输出更好看 方法里边的形式参数 print('my name is {name},我今年 {age},我是个{sex}'.format(name=self.name,age=self.age,sex=sex)) # # 赋予动态参数 def info(self, **kwargs): return kwargs #析构方法:清理 def __del__(self): print('执行结束') #实例化class,也是对init的初始化,即对init里边的形式参数赋值。最后再调用 obj=Person(name='zx',age='11') obj.show() print(obj.info(name='zx', age=12, address='xian', work='teacher'))
(四)类里边的方法
1.普通方法和函数毫无区别
2.特性方法,只读只返回数据
3.需要用到数据调用的时候给实际参数赋值
class Person(object): def show(self): print('这是一个普通方法,和函数无异') # 特性方法只需要返回数据的时候可用 @property def info(self): print('特性方法是只读属性') #方法和方法直接的调用 def login(self,username,password): if username=='zx' and password=='admin': return True else: return False def profile(self,username,password): if self.login(username=username,password=password): print('访问主页成功') obj=Person() obj.show() obj.info obj.profile(username='zx',password='admin')
(五)封装
class Person(object): def __init__(self,name,age): self.name=name self.age=age def getx(self): return self.name,self.age def setx(self, name,age): if len(name)>2 and len(name)<7: self.name = name else: print('超出名字范围') if age>18: self.age=age else: print('未成年') def show(self): print(self.name,self.age) obj=Person(name='wahah',age=22) print(obj.getx()) obj.setx(name='zxx',age=17) print(obj.getx())