027class_part1

栏目: Python · 发布时间: 6年前

内容简介: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('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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

快速傅里叶变换

快速傅里叶变换

K. R. Rao、D. N. Kim、J. J. Hwang / 万帅、杨付正 / 机械工业出版社 / 2013-3 / 98.00元

《国际信息工程先进技术译丛·快速傅里叶变换:算法与应用》深入浅出地阐述了快速傅里叶变换(FFT)的原理,系统地总结了各类FFT算法,并广泛精辟地介绍了FFT在视频和音频信号处理中的各种应用。《国际信息工程先进技术译丛·快速傅里叶变换:算法与应用》在阐述了离散傅里叶变换(DFT)的原理和性质之后,详细讨论了时域抽取(DIT)和频域抽取(DIF)的各类快速算法。论述了近似计算DFT的整数FFT、二维及......一起来看看 《快速傅里叶变换》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器