类的成员和异常处理

it2022-05-05  166

1.私有成员

类中的私有成员 在属性名称前加__可将该属性变成私有属性对于类的公有静态属性,类的外部,类的内部,类的派生类都可以访问私有静态属性:类的外部不能访问,类的派生类不能访问,只有在类的内部才能够访问对象私有属性 类的内部可以使用派生类中也不可访问类的外部也不能访问私有属性应用场景 如果想设定一些私有的或者是不想让类外面用到的密码,加密方式等,可设定为私有属性可通过在私有成员前面加上_类名这种方式进行访问,但是千万不要这么访问!!! # class A: # __girlnum = '1个' # # print(A.__dict__) # python中所有的私有成员: 就是在私有成员前面加上 _类名而已. # print(A._A__girlnum) # 千万不要这么去访问!!!

2.类方法和静态方法

实例方法 定义 ; 第一个参数必须是实例对象,该参数名一般约定位"self" ,通过它来传递实例的属性和方法(也可以传类的属性和方法调用:只能由实例对象调用类方法 定义:使用装饰器@classmethod.第一个参数必须是当前类对象,该参数名一般约定为"cls",通过它来传递类的属性和方法(不能传实例的属性和方法)静态方法 定义:使用装饰器@staticmethod.参数随意,没有self和cls参数,但是方法体重不能使用类或实例的任何属性和方法调用:实例对象和类对象都可以调用双下方法 定义:双下方法是特殊方法,它是解释器提供的,有双下划线加方法名加双下换线的具有特殊意义的方法,双下方法主要是python源码程序员使用的 定义一个Student类,我要统计学生的个数.

class Student:

num = 0

def init(self,name):

self.name = name

self.count()

@classmethod

def count(cls):

cls.num = cls.num + 1

@classmethod

def get_num(cls):

return cls.num

ly = Student('李业')

sq = Student('申强')

sq1 = Student('申强')

sq2 = Student('申强')

sq3 = Student('申强')

sq4 = Student('申强')

print(Student.get_num())

num = 1

for i in range(4):

num += 1

for i in range(6):

pass

print(num)

3.方法伪装为属性

property是一种特殊属性,访问它时会执行一段功能(函数)然后返回应用场景: 当一个类的函数定义成特性以后,对象再去使用的时候该函数的时候,根本无法察觉到是执行了一个函数后计算出的据俄国,这种特性遵循了统一访问原则 #bmi值测试人体体脂: # class Bmi: # # def __init__(self, name, weight, height): # # self.name = name # self.weight = weight # self.height = height # # def bmi(self): # return self.weight / self.height**2 # # tb = Bmi('太白',80, 1.75) # print(tb.bmi()) # 我们要让bmi方法伪装成属性,虽然在代码级别没有提升,但是看起来更合理. # class Bmi: # # def __init__(self, name, weight, height): # # self.name = name # self.weight = weight # self.height = height # # @property # def bmi(self): # return self.weight / self.height**2 # # tb = Bmi('太白',80, 1.75) # print(tb.bmi) # print(tb.weight) class Foo: def __init__(self,name): self.name = name @property def aaa(self): print('get的时候运行我啊') @aaa.setter def aaa(self,v): print('修改的时候执行我') @aaa.deleter def aaa(self): print('删除的时候执行我') obj = Foo('alex') # print(obj.name) # obj.name = 'dsb' # del obj.name # print(obj.name) # obj.aaa # obj.aaa = '太白' # print(Foo.aaa) # del obj.aaa # 设置属性的另外一种写法: # class Foo: # # def get_AAA(self): # print('get的时候运行我啊') # # def set_AAA(self,value): # print('set的时候运行我啊') # # def delete_AAA(self): # print('delete的时候运行我啊') # # # bbb = property(get_AAA,set_AAA,delete_AAA) #内置property三个参数与get,set,delete一一对应 # # f1=Foo() # f1.bbb # f1.bbb='aaa' # del f1.bbb

4.isinstance issubclass type.py

isinstance(a,b) : 判断a是否是b类(或者b的派生类)的实例化对象issubclass(a,b) : 判断a类是否是b类(或者b类的派生类)的派生类元类:type type元类是获取该对象从属于的类,而type类比较特殊,python原则是:一切皆对象,其实类也可以理解为对象.而type元类又称为构件类,python中大多数内置的类(包括object)以及自己定义的类都是type元类创造的object是type类的实例,而type类是object类的子类

print(isinstance(s1, Iterable))

type 到底是什么?

type 元类 python中一切皆对象 , 一个类也是一个对象.

么这个(类)对象肯定是由类实例化出来的.

python中你创建的所有类,以及大部分list str等等这些类,都是从type元类实例化得来的.

python中继承object类都是新式类.

object 也是由type元类实例化得来的.

type

```

5.异常处理

语法错误:必须改正,不应该出现逻辑错误:输入空格,非法字符等,其实if条件判断语句就是简单的异常处理异常 异常发生之后,异常之后的代码就不执行了 异常处理 python解释器检测到错误,触发异常(或者程序员自己触发异常)程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关),如果捕捉成功则进入另外一个处理分支,执行你为其定制的逻辑,是程序不会崩溃,这就是异常处理

转载于:https://www.cnblogs.com/W-Y-C/p/11171781.html


最新回复(0)