Python3 中类的静态方法、普通方法、类方法
静态方法: 用 @staticmethod 装饰的不带 self 参数的方法叫做静态方法,类的静态方法可以没有参数,可以直接使用类名调用。
普通方法: 默认有个self参数,且只能被对象调用。
类方法: 默认有个 cls 参数,可以被类和对象调用,需要加上 @classmethod 装饰器。
class Classname: @staticmethod def fun(): print('静态方法') @classmethod def a(cls): print('类方法') # 普通方法 def b(self): print('普通方法') Classname.fun() Classname.a() C = Classname() C.fun() C.a() C.b()
最新的 Python3.7 中(2018.07.13),对类的构造函数进行了精简。
3.7 版本:
from dataclasses import dataclass @dataclass class A: x:int y:int def add(self): return self.x + self.y
相当于以前的:
class A: def __init__(self,x,y): self.x = x self.y = y def add(self): return self.x + self.y
针对 __str__ 方法给出一个比较直观的例子:
class people: def __init__(self,name,age): self.name=name self.age=age def __str__(self): return '这个人的名字是%s,已经有%d岁了!'%(self.name,self.age) a=people('孙悟空',999) print(a)
输出:
这个人的名字是孙悟空,已经有999岁了! 如果没有重载函数的话输出的就是一串看不懂的字符串: <__main__.people object at 0x00000272A730D278>
Python3 内置异常类型的结构:
BaseException +-- SystemExit +-- KeyboardInterrupt +-- GeneratorExit +-- Exception +-- StopIteration +-- StopAsyncIteration +-- ArithmeticError | +-- FloatingPointError | +-- OverflowError | +-- ZeroDivisionError +-- AssertionError +-- AttributeError +-- BufferError +-- EOFError +-- ImportError | +-- ModuleNotFoundError +-- LookupError | +-- IndexError | +-- KeyError +-- MemoryError +-- NameError | +-- UnboundLocalError +-- OSError | +-- BlockingIOError | +-- ChildProcessError | +-- ConnectionError | | +-- BrokenPipeError | | +-- ConnectionAbortedError | | +-- ConnectionRefusedError | | +-- ConnectionResetError | +-- FileExistsError | +-- FileNotFoundError | +-- InterruptedError | +-- IsADirectoryError | +-- NotADirectoryError | +-- PermissionError | +-- ProcessLookupError | +-- TimeoutError +-- ReferenceError +-- RuntimeError | +-- NotImplementedError | +-- RecursionError +-- SyntaxError | +-- IndentationError | +-- TabError +-- SystemError +-- TypeError +-- ValueError | +-- UnicodeError | +-- UnicodeDecodeError | +-- UnicodeEncodeError | +-- UnicodeTranslateError +-- Warning +-- DeprecationWarning +-- PendingDeprecationWarning +-- RuntimeWarning +-- SyntaxWarning +-- UserWarning +-- FutureWarning +-- ImportWarning +-- UnicodeWarning +-- BytesWarning +-- ResourceWarning
with 是个好东西,打开文件的时候多使用它,可以避免很多问题。例如:
temp = os.open('test_text.txt', os.O_RDWR | os.O_CREAT) temp_file = os.fdopen(temp, 'r') print(str(temp_file.read())) os.close(temp)
就可以简化成:
with open('test_text.txt', 'r') as f: print(f.read())
感谢您的支持,我会继续努力的!
支付宝扫一扫,即可进行扫码打赏哦
1163Python3 面向对象
Python3 中类的静态方法、普通方法、类方法
静态方法: 用 @staticmethod 装饰的不带 self 参数的方法叫做静态方法,类的静态方法可以没有参数,可以直接使用类名调用。
普通方法: 默认有个self参数,且只能被对象调用。
类方法: 默认有个 cls 参数,可以被类和对象调用,需要加上 @classmethod 装饰器。
1162Python3 面向对象
最新的 Python3.7 中(2018.07.13),对类的构造函数进行了精简。
3.7 版本:
相当于以前的:
1161Python3 面向对象
针对 __str__ 方法给出一个比较直观的例子:
输出:
1160Python3 错误和异常
Python3 内置异常类型的结构:
1159Python3 错误和异常
with 是个好东西,打开文件的时候多使用它,可以避免很多问题。例如:
就可以简化成: