Python学习笔记(5)

6 自定义功能单元(二)

面向对象编程的基本方法和基本思路

6.1 面向对象编程概述

使得数据的管理更加合理和自动化,减少程序粗错,少写代码,使程序更加容易维护。

6.1.1 万物皆对象

6.1.2 对象优越性

封包

继承

包含

6.1.3 类和对象

6.2 定义和使用类

5.2.1 定义类

class <类名>(父类名):
    pass

In [2]:

class MyClass:
    pass

dir(MyClass)

Out[2]:

['__class__',
 '__delattr__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__le__',
 '__lt__',
 '__module__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__']

6.2.2 使用类

In [6]:

class MyClass:
    'MyClass help.'
    
myclass = MyClass()
print('输出类说明:')
print(myclass.__doc__)  #两个_
print('显示类帮助信息:')
help(myclass)
输出类说明:
MyClass help.
显示类帮助信息:
Help on MyClass in module __main__ object:

class MyClass(builtins.object)
 |  MyClass help.
 |  
 |  Data descriptors defined here:
 |  
 |  __dict__
 |      dictionary for instance variables (if defined)
 |  
 |  __weakref__
 |      list of weak references to the object (if defined)

6.3 类的属性和方法

6.3.1 类的方法

方法的第一个参数必须是self,且不能省略

方法的条用需要实例化,并以实例名.方法名的形式调用

整体进行一个单位的缩进,表示其属于类体中的内容

In [7]:

class SmpClass:
    def info(self):
        print('我定义的类!')
    def mycacl(self,x,y):
        return x+y
    
sc=SmpClass()
sc.info()
print('---------------------')
print(sc.mycacl(3,4))
我定义的类!
---------------------
7

In [12]:

class DemoInit:
    def __init__(self,x,y=0):
        self.x=x
        self.y=y
        
    def mycacl(self):
        return self.x+self.y #调用了本类中的方法__init__
    
dia=DemoInit(3)
print(dia.mycacl())
print('----------------------------')
dib=DemoInit(3,7)
print(dib.mycacl())
3
----------------------------
10

In [14]:

def coord_chng(x,y):
    return (abs(x),abs(y))

class Ant:  #没有初始化参数,默认为0,且每次执行返回都又传递回来
    
    def __init__(self,x=0,y=0):
        self.x=x
        self.y=y
        self.disp_point()
        
    def move(self,x,y):
        x,y=coord_chng(x,y)
        self.edit_point(x,y)
        self.disp_point()
        
    def edit_point(self,x,y):
        self.x+=x
        self.y+=y
        
    def disp_point(self):
        print('当前位置:(%d,%d)' % (self.x,self.y))
        
ant_a=Ant()
ant_a.move(2,4)
ant_a.move(-9,6)
ant_a.move(-9,6)
当前位置:(0,0)
当前位置:(2,4)
当前位置:(11,10)
当前位置:(20,16)

转载于:https://my.oschina.net/zhackj/blog/1632703

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值