码迷,mamicode.com
首页 > 其他好文 > 详细

027class_part1

时间:2018-01-19 19:57:38      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:new   利用   opened   ret   set   request   通过   ide   java   

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

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(21)

 

##构造方法

def  __init__(self):
    print(123)

def  __init__(self,name,age):
  print(3,name,age)

python构造方法只有一个或者没有,和Java不同

###继承

技术分享图片
 1 class  Father:
 2     def  f(self):
 3         print(father)
 4     def  smoke(self):
 5         print(f_吐烟)
 6 
 7 class  Son(Father):
 8     def  s(self):
 9         print(son)
10     def  smoke(self):
11         super(Son,self).smoke()  # super(当前类名,self).父类方法,第一种调用父类方法
12         print(s_吐烟)
13         Father.smoke(self)  # 第二种调用父类方法,推荐使用super
14         
15 s=Son()
16 s.smoke()
View Code

#多继承
类外部调用方法顺序

技术分享图片
 1 class  GF:
 2     def  a1(self):
 3         print(grand.a1)
 4 
 5 class  F1:
 6     def a(self):
 7         print(F1.a)
 8 
 9 class  F2(GF):
10     def a(self):
11         print(F2.a)
12 
13 class S(F1,F2):
14     pass
15 
16 son = S()
17 son.a()         # F1.a,那个在前就调用哪个的,这里F1在前面,如果是S(F2,F1),这样就是F2.a了
18 son.a1()        # grand.a1,从F1往上找找不到就会从右边F2这边找
View Code

类方法内部调用对象方法

技术分享图片
 1 class  BaseRequest:
 2     def  __init__(self):
 3         print(BaseRequest.__init__)
 4     
 5 class  RequestHandler(BaseRequest):
 6     def  __init__(self):
 7         print(RequestHandler.__init__)
 8     def  server_forever(self):
 9         print(RequestHandler.server_forever)
10         self.process_request()   # self还是Son创建的对象,所以还是从Minx开始找
11 
12 def  process_request(self):
13     print(RequestHandler.process_request)
14 
15 class  Minx:
16     def  process_request(self):
17         print(Minx.process_request)
18 
19 class  Son(Minx,RequestHandler):
20     pass
21 
22 o = Son()                       #RequestHandler.__init__
23 o.server_forever()   # RequestHandler.server_forever#Minx.process_request
View Code

 

###多态(了解)
不过,在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)             #  1
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:利用属性实现分页

技术分享图片
 1 #__author:_nbloser
 2 #date:2018/1/19
 3 
 4 class  Pergination:
 5     def  __init__(self,current_page):
 6         try:
 7             p = int(current_page)
 8         except:
 9             p = 1
10         self.page = p
11 
12     @property
13     def  start(self):
14         val = (self.page-1)*10
15         return  val
16 
17     @property
18     def  end(self):
19         val = self.page*10
20         return  val
21 
22 li = []
23 for  i  in  range(1000):
24     li.append(i)
25 
26 while  True:
27     p = input(页码:)
28     obj = Pergination(p)
29 
30 print(li[obj.start:obj.end])
View Code

 

 



 

027class_part1

标签:new   利用   opened   ret   set   request   通过   ide   java   

原文地址:https://www.cnblogs.com/-nbloser/p/8318474.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!