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. ...
随机推荐
- WPF获取程序启动路径(StartupPath)
1. 在传统的Winform中获取 可以使用: Application.StartupPath Application.ExecutablePath 很可惜,这些方法,在WPF中都失效啦 2. 在WP ...
- 网易和淘宝的rem方案剖析
以下内容到分割线前是引用前端大牛的文章,方便大家理解博主内容): 从网易与淘宝的font-size思考前端设计稿与工作流 1. 简单问题简单解决 我觉得有些web app并一定很复杂,比如拉勾网,你看 ...
- 深入理解JavaScript系列(43):设计模式之状态模式
介绍 状态模式(State)允许一个对象在其内部状态改变的时候改变它的行为,对象看起来似乎修改了它的类. 正文 举个例子,就比如我们平时在下载东西,通常就会有好几个状态,比如准备状态(ReadySta ...
- Linux常用命令语法+示例
原文出自:https://blog.csdn.net/seesun2012 Linux常用命令:Linux查看日志命令总结:Tomcat相关:Linux配置网卡,连接外网:Linux下安装JDK:Li ...
- [android] 练习PopupWindow实现对话框
练习使用Dialog实习对话框 package com.example.tsh; import android.app.Activity; import android.app.Dialog; imp ...
- 关于sql优化整理一下
1.where 子句中可以对字段进行 null 值判断吗? 可以,比如 select id from t where num is null 这样的 sql 也是可以的.但是最好不要给数 ...
- CSS3之 :nth-child(n)语法讲解
语法: E:nth-child(n){ sRules } * 匹配父元素索引为n的子元素E :nth-child(n) 让你匹配到父元素的任一子元素: Figure 1:<section id= ...
- docker 容器中设置 mysql lampp php软链接
在容器中安装xampp后,进入到终端,直接输入mysql php 发现报错,命令未被发现.如果输入/opt/lampp/bin/mysql 就可以进入了,所以我们要找到在容器中安装的位置,然后将他 ...
- 第八章.Java集合
Java集合类是一种特别有用的工具类,可用于存储数量不等的对象.Java集合大致可分为Set.List.Queue和Map四种体系 Set代表无序.不可重复的集合 List代表有序.重复的集合 Map ...
- thinkphp传送文章id值