python 面向对象和类成员和异常处理

python 面向对象

你把自己想象成一个上帝,你要创造一个星球,首先你要把它揉成一个个球,两个直径就能创造一个球

class star:
    ‘‘‘名字(name),赤道直径(equatorial diameter),极直径(polar diameter)‘‘‘
    def __init__(self,name,eqDiameter,poDiameter):
        self.name=name
        self.eqDiameter=eqDiameter    #赤道直径
        self.poDiameter=poDiameter    #极直径
        self.show()
    def show(self):
        print("A spin star %s,this ed is %s,pd is %s"%(self.name,self.eqDiameter,self.poDiameter))

earth=star("earth",24901,24859)

得出:A spin star earth created,this ed is 24901,pd is 24859

类和对象的关系:

对象是类的实例

继承:

B类继承A类,A类的可以继承的成员,都是B类的,如果A类有的成员,B类也有,优先使用B类的成员,如果B类的对象要使用A类的成员,要用到多态。

称B类继承A类,B类是由A类派生的,A类是B类父类或基类,B类是A类的子类或派生类,判断方法:issubclass(C(子),B(父))

多态:多种形态------就是子类的对象可以使用父类的成员,这个成员子类里面已经有的,对象不满足子类的这个成员,去找它父类的方法

多个类的继承关系:

多继承实例:

python类成员:

1,字段:静态字段/普通字段

2,方法:静态方法/普通方法/类方法/特殊方法

3,属性

4,成员修饰符

5,特殊方法

类的成员是可以权限控制的,python的类权限只有私有(private)和共有(public),私有的对象的标志是成员前面加__

class Province:
    country="中国"      #静态变量
    __party="Comunity"      #私有的静态成员

私有成员只能当前类内部使用,不能给对象和继承类使用

字段:

字段就是数据成员,静态字段储存在类里,普通字段储存在对象里,每个对象创建都需要开辟普通字段的内存空间,静态字段只需要呆在类的空间里,所以当普通字段太多的时候,如果确定某一个变量初始是固定的情况下,可以把这个变量变成静态字段

方法:

方法都属于类,普通方法由对象去执行,静态方法和类方法由类执行,不创建对象,省空间,类方法指定当前类

@staticmethod   定义静态方法

@classmethod    定义类方法

class Province:
    country="中国"      #静态变量
    __party="Comunity"      #私有的静态成员
    def __init__(self,name):
        self.Myparty=self.__party      #普通变量
        self.__name=name    #私有,不能继承
        self.f1()
        self.__f1()
    def show(self):      #普通对象,由对象去调用
        print(self.__name)
    @staticmethod       #静态方法,通过类去调用,可以类内部使用
    def f1():
        print("fl")

    @staticmethod
    def __f1(self):     #私有的静态方法
        print("private fl")
    @classmethod        #类方法
    def f2(cls):
        print(cls)

属性成员:

看上去像方法,用起来像字段,装饰器:@property

属性可以打印值,赋值,删除值

class profact:
    ‘‘‘改造工厂‘‘‘
    @property      #属性
    def f3(self):
        return 10
    @f3.setter     #可以给属性赋值
    def f3(self,value):
        print(value)
    @f3.deleter     #删除属性
    def f3(self):
        print("deleted")

a=profact()
result=a.f3  #调用的是property下的f3
a.f3=12      #调用@f3.setter下的f3
del a.f3     #调用@f3.deleter下的f3   

特殊成员:


函数


说明


举例


__init__


构造函数,创造对象


__del__


析构函数,垃圾回收


__call__


把对象当成函数调用,当对象后面有()时候调用


a=A()

print(a())


__str__


Print调用


print(a)


__add__


This + other


__sub__


This - other


__iter__


迭代时自动调用,可以用yield配合


__getitem__


接收key,key接收切片1:2:3对应key.start

Key.stop

Key.step


a[“ddd”]


__setitem


接收key和value


a[“ddd”]=”dddd”


__delitem__


接收key


del a[“ddd”]

异常处理:

当用户创建一个目录的时候,不能保证目录不存在

当用户删除目录的时候,不能保证目录存在,也不能保证该目录是否为空

以上这些情况都会导致异常出现,会导致程序终止,而这些本来明明不是问题的问题导致了程序终止,像这些我们明知道会报错的程序就可以用异常处理,显示友好的错误提示,提高用户体验

import os
os.mkdir("kkk")    #kkk目录存在的情况下执行

Traceback (most recent call last):
  File "F:/project/pysession/day08/异常处理.py", line 37, in <module>
    os.mkdir("kkk")
FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: ‘kkk‘

改造后:

import os
try:
    path="kkk"
    os.mkdir(path)
except FileExistsError:
    print("%s目录已经存在"%path)

像上面确定错误类型的可以直接用错误类型,如果无法判断错误类型也可以用Exception:

import os
try:
    path="kkk"
    os.mkdir(path)
except Exception:
    print("%s目录已经存在"%path)

一个完整的捕获:

import os
try:
    path="kkk"
    os.rmdir(path)
except FileNotFoundError:
    print("%s目录不存在"%path)
except OSError:
    print("%s目录不为空"%path)
except Exception:
    print("%s目录无法错误" % path)

else:        #仅在正确的情况下执行
    print("%s目录成功删除"%path)
finally:        #无论错误还是正确,都执行
    print("目录删除到此结束")

我可以自己制造错误 raise <错误类型>("<错误信息>"):

raise Exception("出错了")
得出错误:
Exception: 出错了

想要捕获错误,并且显错误信息:

try:
    raise Exception("出错了")
except Exception as errormsg:
    print(errormsg)

自己定义错误类型:

class MyException(Exception):
    def __init__(self,errormsg):
        self.errormsg=errormsg

    def __str__(self):
        return self.errormsg
raise MyException("出错了")
得出:__main__.MyException: 出错了
时间: 2025-01-05 06:01:39

python 面向对象和类成员和异常处理的相关文章

Python面向对象02/类的空间问题

Python面向对象02/类的空间问题 内容大纲 1.从空间角度研究类 2..类与类之间的关系 1.类的空间问题 1.1何处可以添加对象属性 在类的__init__可以添加,在类的方法也可以添加,在类的外部也可以添加 # class Human: # # mind = '有思想的' # # def __init__(self, name, age): # self.name = name # self.age = age # # def eat(self,argv): # # self.hobb

Python 学习笔记 - 面向对象(类成员)

上一篇学习了Python面向对象的3大特性,封装,继承和多态,这一篇继续学习类成员,包括字段,方法,属性以及他们的修饰符. 1.字段 字段分为静态字段和普通字段.静态字段属于类,而普通字段属于对象,因此静态字段在内存中只保存一份,而普通字段在每个对象中都保存了一份.定义的时候静态字段定义在类的范围里面,而普通字段定义在方法里面. 例如: >>> class Foo:     # 字段(静态字段)     CC = 123     def __init__(self):         #

Python面向对象之类的成员

Python面向对象的编程过程中,我们为类实例化了对象,并通过对象指针来访问类中对应的资源,那么这些资源大体分为三大部分,分别是字段.方法和属性,我们将这三大块统称为类的成员. 一.字段 字段可以分为静态字段.动态字段,下面通过代码展示类中的两种字段 class MyClass:     # 静态字段,属于类,多个对象共用一个静态字段     leader = "abuve"       def __init__(self):         # 动态字段,属于对象,也可以叫普通的字段

python面向对象,类

1:类和对象 是面向对象中的俩个重要概念,类是对事物的抽象,比如人类,球类.对象是事物的实例,比如足球,篮球.球类可以对球的特征和行为进行抽象,然后可以实例化一个真实的球体出来. 2:类的定义 类把需要的变量和函数组合成一起,这种包含称为"封装"..classA(object): 3:类的结构 class类名: 成员变量-属性              ## 类的属性是对数据的封装 成员函数-方法              ## 类的方法是对类的行为进行封装 类的创建: class M

Python 面向对象编程——类和实例

1        面向对象编程 面向对象编程: 面向对象编程--Object OrientedProgramming OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行.为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度. 面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消

Python 面向对象(创建类和对象,面向对象的三大特性是指:封装、继承和多态,多态性)

概念:                                                                                                                                                     ·        面向过程:根据业务逻辑从上到下写垒代码 ·        函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 ·        面向对象:对函数进行分类和封装,

Python基础20_类的约束,异常处理,MD5加密,日志

一. 类的约束 约束程序的结构, 在分配任务之前就应该把功能定义好, 然后分别交给底下的程序员来完成相应的功能 在python中有两种办法来解决这样的问题 1. 提取父类, 然后在父类中定义好方法, 在方法中抛出一个异常, 这样所有继承父类的子类都必须重写这个方法, 否则访问的时候就会报错 class Base: def login(self): raise NotImplementedError   # 没有被实现错误, 要求子类必须重写login方法 , 不然抛出异常 class User(

python 面向对象的类

参考<learn python hard way> 网址:https://learnpythonthehardway.org/book/ex41.html class X(Y) "Make a class named X that is-a Y." 创建一个叫x的类,类x是y(类x 继承y),例如'三文鱼'是'鱼' class X(object): def __init__(self, J) "class X has-a __init__ that takes s

python 面向对象六 类属性和实例属性

一.实例属性 Python是动态语言,根据类创建的实例可以任意绑定属性. 1 >>> class Student(object): 2 ... def __init__(self, name): 3 ... self.name = name # 每个实例必须的属性 4 ... 5 >>> s = Student('Jack') 6 >>> s.score = 90 # 任意绑定属性 7 >>> s.name 8 'Jack' 9 &g