027class_part1
2018-06-18 00:43:22来源:未知 阅读 ()
因为有基础,我直接简单写了
##定义类,创建对象,调用对象方法,返回值
class person: def speak(self,x): print('love',x) return x + '*********' xia = person() s = xia.speak('theonewholoveme') print(s)
##添加属性,和Java有区别
class B: def func(self,x = '**'): print(self.name,x)
z = B() z.name = 'xia' z.func('21')
##构造方法
def __init__(self): print('123') def __init__(self,name,age): print('3',name,age)
python构造方法只有一个或者没有,和Java不同
###继承
1 class Father: 2 def f(self): 3 print('father') 4 def smoke(self): 5 print('f_吐烟') 6 7 class Son(Father): 8 def s(self): 9 print('son') 10 def smoke(self): 11 super(Son,self).smoke() # super(当前类名,self).父类方法,第一种调用父类方法 12 print('s_吐烟') 13 Father.smoke(self) # 第二种调用父类方法,推荐使用super 14 15 s=Son() 16 s.smoke()
#多继承
类外部调用方法顺序
1 class GF: 2 def a1(self): 3 print('grand.a1') 4 5 class F1: 6 def a(self): 7 print('F1.a') 8 9 class F2(GF): 10 def a(self): 11 print('F2.a') 12 13 class S(F1,F2): 14 pass 15 16 son = S() 17 son.a() # F1.a,那个在前就调用哪个的,这里F1在前面,如果是S(F2,F1),这样就是F2.a了 18 son.a1() # grand.a1,从F1往上找找不到就会从右边F2这边找
类方法内部调用对象方法
1 class BaseRequest: 2 def __init__(self): 3 print('BaseRequest.__init__') 4 5 class RequestHandler(BaseRequest): 6 def __init__(self): 7 print('RequestHandler.__init__') 8 def server_forever(self): 9 print('RequestHandler.server_forever') 10 self.process_request() # self还是Son创建的对象,所以还是从Minx开始找 11 12 def process_request(self): 13 print('RequestHandler.process_request') 14 15 class Minx: 16 def process_request(self): 17 print('Minx.process_request') 18 19 class Son(Minx,RequestHandler): 20 pass 21 22 o = Son() #RequestHandler.__init__ 23 o.server_forever() # RequestHandler.server_forever#Minx.process_request
###多态(了解)
不过,在python里面忽略多态,支持多态,所以我就不写了
###类的成员之字段
普通字段 self.***
静态字段 直接在类里面
class Province: country = '中国' def __init__(self,name): self.name = name guangdong = Province('广东') print(Province.country) # 中国 # 静态字段,在类里面,可以通过对象访问也可以通过类访问 print(guangdong.name) # 广东 # 普通字段,在对象里面
###类的方法
普通方法 1、对象调用;
2、通过类调用普通方法(不使用)
class P: def f(self): print('ffff') obj = P() P.f(obj) # 这样调用,蛮无聊的。不会使用
静态方法:加@staticmethod
class P: @staticmethod def sta(): print('statics') P.sta()
类方法:和静态方法差不多,参数问题,这个不重要(不会使用)
@classmethod def classmd(cls): print(cls) P.classmd()
#类成员之属性
class P: @property def per(self): print('property') return 1 @per.setter def per(self,val): print(val) @per.deleter def per(self): print('deleter') x = P() r = x.per # property, 有类似x.per的就执行 @property下函数 ,需要有返回值 print(r) # 1 x.per = 123 # 自动显示123 有类似 x.per = *** 的就执行 @per.setter 下函数 del x.per # 显示deleter 有类似del x.per 的就执行@per.deleter 下函数
property实现的功能相当于Java的get,.setter相当于实现set,deleter相当于delete
eg:利用属性实现分页
1 #__author:_nbloser 2 #date:2018/1/19 3 4 class Pergination: 5 def __init__(self,current_page): 6 try: 7 p = int(current_page) 8 except: 9 p = 1 10 self.page = p 11 12 @property 13 def start(self): 14 val = (self.page-1)*10 15 return val 16 17 @property 18 def end(self): 19 val = self.page*10 20 return val 21 22 li = [] 23 for i in range(1000): 24 li.append(i) 25 26 while True: 27 p = input('页码:') 28 obj = Pergination(p) 29 30 print(li[obj.start:obj.end])
#######################################
经理和员工差异(用来熟悉知识)
class Employee: @property def name(self): return self.__pname @name.setter def name(self,val): self.__pname = val
import employee class Manager(employee.Employee): @property def bonus(self): return self.__bonus @bonus.setter def bonus(self,val): self.__bonus = val
from employee import Employee from manager import Manager if __name__ == '__main__': emp = Employee() man = Manager() emp.name = 'xxxx' man.name = 'iiii' man.bonus = 10000 print(emp.name,man.name,man.bonus)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:模块三—面向对象
- 第一个Django应用程序_part1 2018-06-18
- 第二周练习 part1 --- 简易版购物车程序 2018-06-18
- 不是因为有了希望才坚持,而是因为坚持才有了希望! 2018-06-17
- 基于.NET开发和运行环境架构校园信息系统(需求规格说明书)[P 2008-04-09
- 基于.NET开发和运行环境架构校园信息系统(概要设计说明书)[P 2008-04-09
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash