因为有基础,我直接简单写了
##定义类,创建对象,调用对象方法,返回值

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的更多相关文章

  1. Oozie安装与部署

    原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3885162.html 安装基础环境: Hadoop – 2.2.0  Linux – Centos 6. ...

随机推荐

  1. [java源码解析]对HashMap源码的分析(二)

    上文我们讲了HashMap那骚骚的逻辑结构,这一篇我们来吹吹它的实现思想,也就是算法层面.有兴趣看下或者回顾上一篇HashMap逻辑层面的,可以看下HashMap源码解析(一).使用了哈希表得“拉链法 ...

  2. luajit+nginx+上传模块+lua模块编译安装

    git clone https://github.com/fdintino/nginx-upload-module.git git clone https://github.com/openresty ...

  3. 架构实战项目心得(五):mysql安装

    1.  yum安装mysql yum -y install mysql-server 2.  启动mysql服务 启动mysql:service mysqld start 查看mysql的状态:ser ...

  4. RabbitMQ - 介绍

    RabbitMQ是个健壮.易用.开源.支持多种操作系统和语言的message broker. 当然,一切的前提是机器里面正在运行着rabbitmq-server. 点击下面的图片下载: rabbitM ...

  5. Struts2 学习(三)

    一.访问Servlet API 的三种方式 1.什么是 Action 访问 Servlet 的 API 1.访问 Servlet 的API: 1.获取 request 对象. 2.接受请求参数. 3. ...

  6. IntelliJ IDEA 快捷键(二)(window版)

    一.重构 1.重构变量 修改变量名称,即重命名.快捷键 Shift + F6 ,位于 Refactor 中. 2.重构方法 可以增加变量个数.快捷键 Ctrl + F6 ,位于 Refactor 中. ...

  7. shiro,基于springboot,基于前后端分离,从登录认证到鉴权,从入门到放弃

    这个demo是基于springboot项目的. 名词介绍: ShiroShiro 主要分为 安全认证 和 接口授权 两个部分,其中的核心组件为 Subject. SecurityManager. Re ...

  8. javascrapy 正则表达式验证 IP和MAC

    var psrc = $('input[name="psrc"]').val() var hwsrc = $('input[name="hwsrc"]').va ...

  9. Spring课程 Spring入门篇 7-1 Aspect介绍及PointCut注解应用

    本节主要是理论型: 关键看下节实操. 这个其实只要理解一点:使用AspectJ进行Spring AOP 编程,其实就是使用了JAVA注解的风格进行配置和使用. 不像之前讲的那样在配置文件中配置使用.

  10. thinkphp传送文章id值