<jupyter_start><jupyter_text>对象和类- 一个学生，一张桌子，一个圆都是对象- 对象是类的一个实例，你可以创建多个对象，创建类的一个实例过程被称为实例化，- 在Python中对象就是实例，而实例就是对象  定义类class ClassName:    do something    - class 类的表示与def 一样- 类名最好使用驼峰式- 在Python2中类是需要继承基类object的，在Python中默认继承，可写可不写- 可以将普通代码理解为皮肤，而函数可以理解为内衣，那么类可以理解为外套<jupyter_code># 类必须初始化，是用self,初始化自身
# 类里面所有的函数中的第一个变量不再是参数，而是一个印记
# 在类中，如果有参数需要多次使用，那么就可以将其设置为共享参数
class Joker:
    def __init__(self):#初始化
        print('我初始化了')
    def Print_(self,name,name2='XYM'):
        print('Joker hahaha',name,name2)
Joker()#调用  ()代表直接走初始化函数
huwang=Joker()
huwang.Print_(name='XYQ')
class Joker:
    def __init__(self):#初始化
        print('我初始化了')
    def SUM(self,num1,num2):
        return num1 + num2
    def cheng(self,num1,num2):
        return num1 * num2
huwang=Joker()
huwang.SUM(num1=2,num2=5)
huwang.cheng(num1=3,num2=6)
class Joker:
    def __init__(self,num1,num2):#初始化
        print('我初始化了')
        #参数共享
        self.num1 = num1
        self.num2 = num2
        print(self.num1,self.num2)
    def SUM(self,name):
        print(name)
        return self.num1 + self.num2
    def cheng(self):
        return self.num1 * self.num2
huwang = Joker(num1=1,num2=2)
huwang.SUM('JJJ')
class Xym:
    def __init__(self):
          print('我初始化了')
    def XYM(self,num):  
        if num % 2 == 0:
            print(num,'是偶数')
        else:
            print(num,'是奇数')
    def XYQ(self,year):
        if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
            print(year,'是闰年')
        else:
            print(year,'是平年')
yyqx = Xym()
yyqx.XYM(4)
yyqx.XYQ(1998)<jupyter_output>1998 是平年<jupyter_text>定义一个不含初始化__init__的简单类class ClassName:    joker = “Home”        def func():        print('Worker')    - 尽量少使用  定义一个标准类- __init__ 代表初始化，可以初始化任何动作- 此时类调用要使用()，其中（）可以理解为开始初始化- 初始化内的元素，类中其他的函数可以共享![](../Photo/85.png) - Circle 和 className_ 的第一个区别有 __init__ 这个函数- 。。。。   第二个区别，类中的每一个函数都有self的这个“参数”  何为self？- self 是指向对象本身的参数- self 只是一个命名规则，其实可以改变的，但是我们约定俗成的是self，也便于理解- 使用了self就可以访问类中定义的成员  使用类 Cirlcle  类的传参- class ClassName:            def __init__(self, para1,para2...)：                        self.para1 = para1                        self.para2 = para2  EP:- A：定义一个类，类中含有两个功能：    - 1、产生3个随机数，获取最大值    - 2、产生3个随机数，获取最小值- B：定义一个类，（类中函数的嵌套使用）    - 1、第一个函数的功能为：输入一个数字    - 2、第二个函数的功能为：使用第一个函数中得到的数字进行平方处理    - 3、第三个函数的功能为：得到平方处理后的数字 - 原来输入的数字，并打印结果<jupyter_code># A
import random
class Xym:
    def __init__(self):
            print('我初始化了')
    def max_(self):
        a = random.randint(1,10)
        b = random.randint(1,10)
        c = random.randint(1,10)
        print(a,b,c)
        return max(a,b,c)
    def min_(self):
        a = random.randint(1,10)
        b = random.randint(1,10)
        c = random.randint(1,10)
        print(a,b,c)
        return min(a,b,c)
# 创建类的一个实例
a = Xym()
a.max_()
a.min_()
# B(1)
class Xym:
    def __init__(self,):
            print('我初始化了')
    def func1(self):
        self.num = eval(input('>>'))
        print('输入的数字是',self.num)
    def func2(self):
        self.square = self.num ** 2
        print('平方数是:',self.square)
    def func3(self):
        self.cha = self.square - self.num
        print('两者的差值是:',self.cha)
yyqx = Xym()
yyqx.func1()
yyqx.func2()
yyqx.func3()
# B(2)
class Xym:
    def __init__(self,):
            print('我初始化了')
    def func1(self):
        num = eval(input('>>'))
        print('输入的数字是',num)
        return num
    def func2(self):
        num = self.func1()
        square = num ** 2
        print('平方数是:',square)
        return square,num
    def func3(self):
        square,num = self.func2()
        cha = square - num
        print('两者的差值是:',cha)
yyqx = Xym()
yyqx.func3()<jupyter_output>>>5
输入的数字是 5
平方数是: 25
两者的差值是: 20<jupyter_text>输入QQ，账号，密码，登陆成功或者登陆失败，登陆失败的话滑动验证码显示密码输入错误<jupyter_code>class Xym:
    def __init__(self):
        print('我初始化了')
        self.account = '123'
        self.password = '<PASSWORD>'
    def Account(self):
        self.acc = input('请输入账号:>>')
    def Password(self):
        self.passwor = input('请输入密码:>>')
    def Check(self):
        if self.acc == self.account and self.passwor == self.password:
            print('Success')
        else:
            self.Verify()
    def Verify(self):
        Verify_Var = 123
        print('验证码是:',Verify_Var)
        while 1:
            User_Verify = eval(input('请输入验证码:>>'))
            if User_Verify==Verify_var:
                print('Failed')
                break
    def Start(self):
        self.Account()
        self.Password()
        self.Check()   
yyqx = Xym()
yyqx.Start()
class SAR:
    def __init__(self):
        print('我初始化了')
        self.account = '123'
        self.password = '<PASSWORD>'
    def Account(self):
        self.acc = input('请输入账号:>>')
    def Password(self):
        self.passwor = input('请输入密码:>>')
    def Check(self):
        if self.acc == self.account and self.passwor == self.password:
            print('success')
        else:
            self.Verify()
    def Verify(self):
        Verify_Var = 123
        print('验证码是:',Verify_Var)
        while 1:
            User_Verify = eval(input('请输入验证码:>>'))
            if User_Verify == Verify_Var:
                print('failed')
                break
    def Start(self):
        self.Account()
        self.Password()
        self.Check()              
yyqx = SAR()
yyqx.Start()<jupyter_output>请输入账号:>>123
请输入密码:>><PASSWORD>
验证码是: 123
请输入验证码:>>123
failed<jupyter_text>类的继承- 类的单继承- 类的多继承- 继承标识>  class SonClass(FatherClass):                        def __init__(self):                            FatherClass.__init__(self)<jupyter_code>class A:
    def __init__(self):
        self.a = 'a'        # __代表私有变量，不可继承，不可在外部调用，但是可以在内部使用
    def a_(self):
        print('class A')
        
class B(A):
    def __init__(self):
        #告诉A,B即将继承A   #多继承，前面覆盖后面自左向右
        A.__init__(self)
#         print(self.a)
#         self.a_()
    def b_(self):
        print(self.a)
        self.a_()
bb = B()
bb.b_()<jupyter_output>a
class A<jupyter_text>私有数据域(私有变量，或者私有函数)- 在Python中 变量名或者函数名使用双下划线代表私有  \__Joker,   def \__Joker():- 私有数据域不可继承- 私有数据域强制继承   \__dir__() ![](../Photo/87.png)  EP:![](../Photo/88.png)![](../Photo/89.png)![](../Photo/90.png)  类的其他- 类的封装    - 实际上就是将一类功能放在一起，方便未来进行管理- 类的继承（上面已经讲过）- 类的多态    - 包括装饰器：将放在以后处理高级类中教    - 装饰器的好处：当许多类中的函数需要使用同一个功能的时候，那么使用装饰器就会方便许多    - 装饰器是有固定的写法        - 其包括普通装饰器与带参装饰器  Homewor UML类图可以不用画 UML 实际上就是一个思维图- 1![](../Photo/91.png)<jupyter_code>class A:
    def __init__(self,width,height):
        self.width = width
        self.height = height
    def getArea(self):
        self.Area = self.width * self.height
        print('矩形的面积是:',self.Area)
    def getPerimeter(self):
        self.Perimeter = 2 * self.width + 2 * self.height
        print('矩形的周长:',self.Perimeter)
W = A(width=4,height=40)
W.getArea()
W.getPerimeter()<jupyter_output>矩形的周长: 88<jupyter_text>- 2![](../Photo/92.png) - 3![](../Photo/93.png) - 4![](../Photo/94.png)![](../Photo/95.png) - 5![](../Photo/96.png) - 6![](../Photo/97.png) - 7![](../Photo/98.png)<jupyter_code>class XYM:
    def __init__(self,a,b,c,d,e,f):
        self.a = a
        self.b = b
        self.c = c
        self.d = d
        self.e = e
        self.f = f
    def jie_(self):
        x = (self.e * self.d - self.b * self.f)/(self.a * self.d - self.b * self.c)
        y = (self.a * self.f - self.e * self.c)/(self.a * self.d - self.b * self.c)
        if (self.a * self.d - self.b * self.c) == 0:
            print('这个方程式无解')
        else:
            print(x,y)
yyqx=XYM(2,7,6,9,4,3)
yyqx.jie_()<jupyter_output>-0.625 0.75
{'fraction_non_alphanumeric': 0.1542637711864407, 'fraction_numerical': 0.024629237288135594, 'mean_word_length': 2.3170838823012736, 'pattern_counts': {'":': 0, '<': 22, '<?xml version=': 0, '>': 47, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '6', 'dir': 'jupyter-structured-clean-dedup', 'id': '311366', 'license': 'Apache-2.0', 'n_tokens_mistral': 3600, 'n_tokens_neox': 3674, 'n_words': 499, 'path': '7.23.ipynb', 'repo_name': 'xym99/mysql', 'size': '7531'}