027class_part1
因为有基础,我直接简单写了
##定义类,创建对象,调用对象方法,返回值
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('')
##构造方法
def __init__(self):
print('') def __init__(self,name,age):
print('',name,age)
python构造方法只有一个或者没有,和Java不同
###继承
class Father:
def f(self):
print('father')
def smoke(self):
print('f_吐烟') class Son(Father):
def s(self):
print('son')
def smoke(self):
super(Son,self).smoke() # super(当前类名,self).父类方法,第一种调用父类方法
print('s_吐烟')
Father.smoke(self) # 第二种调用父类方法,推荐使用super s=Son()
s.smoke()
#多继承
类外部调用方法顺序
class GF:
def a1(self):
print('grand.a1') class F1:
def a(self):
print('F1.a') class F2(GF):
def a(self):
print('F2.a') class S(F1,F2):
pass son = S()
son.a() # F1.a,那个在前就调用哪个的,这里F1在前面,如果是S(F2,F1),这样就是F2.a了
son.a1() # grand.a1,从F1往上找找不到就会从右边F2这边找
类方法内部调用对象方法
class BaseRequest:
def __init__(self):
print('BaseRequest.__init__') class RequestHandler(BaseRequest):
def __init__(self):
print('RequestHandler.__init__')
def server_forever(self):
print('RequestHandler.server_forever')
self.process_request() # self还是Son创建的对象,所以还是从Minx开始找 def process_request(self):
print('RequestHandler.process_request') class Minx:
def process_request(self):
print('Minx.process_request') class Son(Minx,RequestHandler):
pass o = Son() #RequestHandler.__init__
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) #
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:利用属性实现分页
#__author:_nbloser
#date:2018/1/19 class Pergination:
def __init__(self,current_page):
try:
p = int(current_page)
except:
p = 1
self.page = p @property
def start(self):
val = (self.page-1)*10
return val @property
def end(self):
val = self.page*10
return val li = []
for i in range(1000):
li.append(i) while True:
p = input('页码:')
obj = Pergination(p) print(li[obj.start:obj.end])
#######################################
经理和员工差异(用来熟悉知识)
class Employee:
@property
def name(self):
return self.__pname @name.setter
def name(self,val):
self.__pname = val
employee.py
import employee
class Manager(employee.Employee):
@property
def bonus(self):
return self.__bonus @bonus.setter
def bonus(self,val):
self.__bonus = val
manager.py
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)
run.py
027class_part1的更多相关文章
- Oozie安装与部署
原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3885162.html 安装基础环境: Hadoop – 2.2.0 Linux – Centos 6. ...
随机推荐
- 巧用hover改变css样式和背景
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Map集合遍历的4种方法
完全复制https://www.cnblogs.com/blest-future/p/4628871.html import java.util.HashMap; import java.util.I ...
- bat下执行java程序报错处理
G:\>java -Xms128M -Xmx512M -server -Dprogram.name=b omc-sa-tdtpagent -Dfile.encoding=GBK -Duser.t ...
- [转]js 回车转成TAB(利用tabindex)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 理解 Azure 虚拟机的性能监视
随着越来越多的用户将生产应用迁移到云平台,一些传统 IT 的运维功能也相应的需要改变,例如监控,备份等等.我们希望通过这一系列的文章来协助用户更好的理解在 Azure 云平台上实现资源监控的方法. 在 ...
- MDI-设置子窗体只能弹出一个--单例模式
不足之处,欢迎指正! 什么是MDI..我表示不知道的呢. MDI(Multiple Document Interface)就是所谓的多文档界面,与此对应就有单文档界面 (SDI), 它是微软公司从Wi ...
- Java之Poi导出Excel文档
一.Poi简介 在后台管理系统中,我们经常要做的导出操作,通常导出为Excel文档的形式,而Poi则提供了这种需要的支持. 二.Workbook/HSSFWorkbook/XSSFWorkbook 1 ...
- 学会Markdown,写博客不愁
前言 Markdown是一种轻量级的标记语言,有John Gruber以及Aaron Hillel Swartz一起编写.Aaron Hillel Swartz是一个极富传奇的黑客,有兴趣可以看看他的 ...
- javaweb之EL自定义函数
1.什么是EL自定义函数 EL自定义函数是在EL表达式中调用的某个java类的静态方法,这个静态方法需在web应用程序中进行配置才可以被EL表达式调用.EL自定义函数可以扩展EL表达式的功能,让EL表 ...
- sqlserver查询表字段描述(转)
原文地址:https://blog.csdn.net/changhong009/article/details/29587063 --快速查看表结构(比较全面的) SELECT CASE WHEN c ...