Python学习笔记

学习 Python 从我做起


定义简单类的方法

class 类名:
    def 方法1(self, 参数列表):
       pass

    def 方法2(self, 参数列表):
       pass

注意: 类名 的命名规则要符合 大驼峰命名法,第一个参数必须为 self


初始化方法

__init__ 初始化方法,变量在这里初始化

class A:
    def __init__(self, num2):
        self.num = 100
        self.num2 = num2


a = A(200)
print(a.num) #100
print(a.num2) #200

内置方法

__del__ 代码全部执行完运行此方法

__str__ 制定输出信息

class A:
    def __init__(self, name):
        self.name = name
        print('name is %s' % name)

    def __del__(self):
        print('end')

    def __str__(self):
        print('666')


a = A('cat')
print(a.name) #cat
print(a) #666

私有属性和方法

class A:
    def __init__(self):
        self.num1 = 100
        self.__num2 = 200 #私有

    def test(self):
        print('test')

    def __test(self):
        print('test')

a = A()
print(a.num1) #100
print(a.__num2) #报错
a.test() #test
a.__test() #报错

单继承

class A:
    def test(self):
        print('test')

class B(A):
    def run(self):
        print('run')

b = B()
b.test() #test
b.run() #run

重写

具体实现即直接写一个同名方法即可实现

class A:
    def test(self):
        print('test')

class B(A):
    def test(self):
        print('run')

b = B()
b.test() #run

扩展父类方法

super() 可以使用父类的方法

class A:
    def test(self):
        print('test')

class B(A):
    def test(self):
        print('run')
        super().test()

b = B()
b.test() #run #test

多继承

class A:
    def test1(self):
        print('test1')

class B:
    def test2(self):
        print('test2')


class C(A, B):
    def test3(self):
        print('test3')

c = C()

c.test1() #test1
c.test2() #test2
c.test3() #test3

注意: 尽量不要写同样的方法名,否则使用的时候会按先后顺序调用

多态

不同的 子类对象 调用相同的 父类方法,产生不同的执行结果

class Dog(object):
    def __init__(self, name):
        self.name = name

    def game(self):
        print('%s 正在玩耍' % self.name)


class Xiaotianquan(Dog):
    def game(self):
        print("%s 飞到天上去" % self.name)
        super().game()


class Person(object):
    def __init__(self,name) -> None:
        self.name = name

    def game_with_dog(self, dog):
        print('%s 和 %s 玩耍' % (self.name, dog.name) )

        dog.game()


wangcai = Xiaotianquan('旺财')
xiaoming = Person('小明')
xiaoming.game_with_dog(wangcai)

类是一个特殊的对象

  • 类属性 就是给 类对象 种定义的 属性
  • 通常用来记录 与这个类相关 的特征
  • 类属性 不会用于记录 具体对象 的特征
class Tool(object):
    count = 0

    def __init__(self, name):
        self.name = name
        Tool.count += 1


a = Tool('锤子')
b = Tool('斧头')

print(Tool.count)

类方法

@classmethod 是必带的

方法的第一个 参数 一定是 cls class的缩写,哪一个类 调用的方法,方法内的 class 就是 哪一个类的引用

@classmethod
def 类方法(cls):
    pass

单例

__new__ 创建对象时,new 方法会被自动调用

class Test:
    instance = None

    def __new__(cls):
        print('创建对象,分配空间')

        if cls.instance == None:
            cls.instance =  super().__new__(cls)

        return cls.instance

test1 = Test()
print(test1) #...456
test2 = Test()
print(test2) #...456

异常

捕获异常 处理方法时捕获错误信息

Exception 捕获所有异常错误

try:
    num = int(input('请输入一个整数:'))
    result = 8 / num
except ZeroDivisionError:
    print('除0错误')
except ValueError:
    print('请输入正确的整数')
    # 捕获所有错误类型
except Exception as result:
    print('未知错误 %s' % result)
else:
    print('正确输入,结果为 %s' % result)
finally:
    print('无论是否有异常,都会执行次代码')

异常的传递

def demo1():
    return int(input('输入整数:'))

def demo2():
    return demo1()

try:
    print(demo2())
except Exception as result:
    print('未知错误 %s' % result)

抛出 raise 异常

def input_password():
    pwd = input("请输入密码:")

    if len(pwd) >= 8:
        return pwd

    print('主动抛出异常')
    ex = Exception('密码长度不够')
    raise ex

try:
    print(input_password())
except Exception as result:
    print(result)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值