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. ...
随机推荐
- 使用c#特性,给方法或类打自定义标签再反射获取
给方法打自定义标签再反射获取 1.自定义特性类 using System; using System.Collections; using System.Collections.Generic; // ...
- hadoop源码svn下载地址
1.apache开源框架
- android studio Cannot resolve symbol '@drawable/XXX'等问题解决办法
方法1."Build " -> "Clean project" 方法 2."Tools" -> "Android&qu ...
- OpenGL初识
OpenGL 概念 OpenGL提供的是一系列接口, 它是指一个规范, OpenGL规范严格规定了每个函数该如何执行, 以及它们的输出值, 具体的实现是由各个显示设备厂商, 它作为本地系统库直接运行在 ...
- Netezza External Tables --How to use local files in external table
FROM: http://tennysusantobi.blogspot.com/2012/08/netezza-external-tables.html Netezza External Table ...
- ActiveMQ - 入门指南
首先需要下载ActiveMQ,下面的链接给我们列出了所有版本: http://activemq.apache.org/download-archives.html 每个版本为不同的OS提供了链接: 公 ...
- [javaEE] 开源数据库连接池
一些开源组织提供了数据源的独立实现: DBCP数据库连接池 C3P0数据库连接池 Apache Tomcat内置的连接池 DBCP连接池 apache提供的连接池实现,需要导入common-dbcp. ...
- JavaScript之parseInt()数值转换常被忽略的问题
使用parseInt()你可以从字符串中获取数值,该方法接受另一个基数参数,这经常省略,但不应该.当字符串以”0″开头的时候就有可能会出问题,例如,部分时间进入表单域,在ECMAScript 3中,开 ...
- java多线程之ReentrantLock
前言 相信学过java的人都知道 synchronized 这个关键词,也知道它用于控制多线程对并发资源的安全访问,兴许,你还用过Lock相关的功能,但你可能从来没有想过java中的锁底层的机制是怎么 ...
- laravel5.7 表单验证
laravel5.7 表单验证 一.创建表单请求 1.找到 larave5.7 文档 验证 中的创建表单请求,这里就要用到命令:php artisan make:request BrandReques ...