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. ...
随机推荐
- JavaScript中类型检测
文章首发: http://www.cnblogs.com/sprying/p/4349426.html 本文罗列了一般Js类型检测的方法,是构建Js知识体系的一小块,这篇文章是我很早之前总结的. 一. ...
- ODBC, OLEDB, ADO, ADO.NET
在SSIS中,选择Connction Manager时,有很多的类型.其中会发现如下4个连接类型ODBC, OLEDB, ADO, ADO.NET.这4个东东到底是什么,他们有什么关联,什么区别,如何 ...
- Expression Blend实例中文教程(3) - 布局控件快速入门Grid
上一篇对Blend 3开发界面进行了快速入门介绍,本篇将基于Blend 3介绍Silverlight控件.对于微软开发工具熟悉的朋友,相信您很快就熟悉Blend的开发界面和控件. XAML概述 Sil ...
- ASP.NET MVC4 新手入门教程之六 ---6.编辑视图与编辑方法
在本节中,您会为电影控制器检查生成的操作方法和视图.然后,您将添加一个自定义的搜索页面. 运行该应用程序,然后浏览到Movies控制器通过将/Movies追加到您的浏览器的地址栏中的 URL.将鼠标指 ...
- javaweb之EL自定义函数
1.什么是EL自定义函数 EL自定义函数是在EL表达式中调用的某个java类的静态方法,这个静态方法需在web应用程序中进行配置才可以被EL表达式调用.EL自定义函数可以扩展EL表达式的功能,让EL表 ...
- 在grid结果集中实现全选或全不选某些特定的行
在script的中的代码如下: function check(){ var id = gridgetselectvalue("require_id"); if(id.length& ...
- ZT 为什么Java中继承多数是有害的?
大多数好的设计者象躲避瘟疫一样来避免使用实现继承(extends 关系).实际上80%的代码应该完全用interfaces写,而不是通过extends.“Java设计模式”一书详细阐述了怎样用接口继承 ...
- 使用PowerShell批量解除锁定下载的文件
使用PowerShell批量解除锁定下载的文件 3.在需要解锁的文件所在的文件夹中空白处,按住Shift然后单击右键,在弹出的右键菜单中,选择“在此处打开PowerShell窗口”, 输入Get-Ch ...
- Effective C++ .37 virtual函数中默认参数的表现
#include <iostream> #include <cstdlib> using namespace std; class Pen { public: ) { cout ...
- Android 录音getMaxAmplitude()
这个方法是用来获取在前一次调用此方法之后录音中出现的最大振幅,文档解释如下: Returns the maximum absolute amplitude that was sampled since ...