<jupyter_start><jupyter_text>对象和类- 一个学生，一张桌子，一个圆都是对象- 对象是类的一个实例，你可以创建多个对象，创建类的一个实例过程被称为实例化，- 在Python中对象就是实例，而实例就是对象  定义类class ClassName:    do something    - class 类的表示与def 一样- 类名最好使用驼峰式- 在Python2中类是需要继承基类object的，在Python中默认继承，可写可不写- 可以将普通代码理解为皮肤，而函数可以理解为内衣，那么类可以理解为外套  定义一个不含初始化__init__的简单类class ClassName:    joker = “Home”        def func():        print('Worker')    - 尽量少使用<jupyter_code>#类必须初始化，是用self，初始化自身
#类里面所有的函数中的第一个变量不在是参数，而是一个印记 
#在类中，如果有参数需要多次使用，那么就可以将其设置为共享参数
class Joker:
    def __init__(self,num1,num2):
        print('我初始化了')
        #参数共享
        self.num1 = num1
        self.num2 = num2
    def SUM(self):
        return self.num1 + self.num2
    def cheng(self):
        return self.num1 * self.num2
    def __(self):
        print ('Joker aaa')
Joker()
class wang:
    def __init__(self):
        print('我初始化了')
    def qihuoou(num):
        if num % 2 ==0:
            print('偶数')
        else:
            print('奇数')
    def year(num1):
        if num1 % 4 ==0:
                  print('闰年')
        else:
                  print('平年')               
wang()
wang.qihuoou(35)<jupyter_output>奇数<jupyter_text>定义一个标准类- __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>import random
class wang:
    def __init__(self):
        print('我初始化')
    def max_(self):
        a = random.randint(0,10)
        b = random.randint(0,10)
        c = random.randint(0,10)
        print (a,b,c)
    def min_(self):
        a = random.randint(0,10)
        b = random.randint(0,10)
        c = random.randint(0,10)
        print (a,b,c)
        return min(a,b,c)
a = wang()
a.max_()
import random
class wang:
    def __init__(self):
        pass
    def shu(self):
        a = eval(input('请输入一个数'))
        print('这个数是',a)
        return a
    def pingfang(self):
        a = self.shu()
        b = a**2
        print('这个数的平方是',b)
        return b,a                                                                                                                                    
    def chuli(self):
        b,a = self.pingfang()
        c=b-a
        print('最后的数是',c)
n=wang()
n.chuli()
import random
a = random.randint(0,9)
b = random.randint(0,9)
c = random.randint(0,9)
d = random.randint(0,9)
print(a,b,c,d)
a1,b1,c1,d1 = eval(input('a,b,c,d'))

while 1: 
    if (a,b,c,d)==(a1,b1,c1,d1):
        print('验证码正确')
        break
    else:
        a=random.randint(0,9)
        b=random.randint(0,9)
        c=random.randint(0,9)
        d=random.randint(0,9)
        print(a,b,c,d)
        a1,b1,c1,d1 = eval(input('a,b,c,d'))<jupyter_output><empty_output><jupyter_text>类的继承- 类的单继承- 类的多继承- 继承标识>  class SonClass(FatherClass):                        def __init__(self):                            FatherClass.__init__(self)  私有数据域(私有变量，或者私有函数)- 在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>import random
class Rectangle:
    def __init__(self):
        pass
    def width(self):
        a = eval(input('请输入一个数'))
        print('图形宽为',a)
        return a
    def heightd(self):
        b = eval(input('请输入一个数'))
        print('图形高为',b)
        return b
    def getPerimete(self):
        a = self.width()
        b = self.heightd()
        c = 2*a+2*b
        print('周长为',c)
        return c,b,a
    def getArea(self):
        a = self.width()
        b = self.heightd()
        s = a*b
        print('面积是',s)
        return s,b,a

n=Rectangle()
n.getPerimete()
n.getArea()<jupyter_output>请输入一个数4
图形宽为 4
请输入一个数40
图形高为 40
面积是 160<jupyter_text>- 2![](../Photo/92.png)<jupyter_code>class Account:
    def __init__(self):
        self.__id=int(1122)#设立私有int数据域
        self.__balance=float(20000)#设立私有浮点数据域
        self.__annuallInterestRate=float(0.045)#设立私有浮点数据域储存当前利率
    def id_(self):
        self.id=eval(input('用户id:'))#用户id
    def getMonthlyInterestRate(self):
        x=float(self.__annuallInterestRate/12)#根据已知的年利率计算月利率
        print('月利率为：',x)
    def getMonthlyInterest(self):
        y=self.__balance*float(self.__annuallInterestRate/12)#根据已知年利率，本金，计算月利息
        print('月利息为：',y)
    def withdraw(self):
        self.w=eval(input('取钱金额'))
    def deposit(self):
        self.d=eval(input('存入金额'))
    def balance(self):
        b=float(self.__balance-self.w+self.d)#计算余额
        print('余额为',b)
    def zuihou(self):
        self.id_()
        self.getMonthlyInterestRate()
        self.getMonthlyInterest()
        self.withdraw()
        self.deposit()
        self.balance() 
n=Account()
n.zuihou()<jupyter_output>用户id:1122
月利率为： 0.00375
月利息为： 75.0
取钱金额2500
存入金额3000
余额为 20500.0<jupyter_text>- 3![](../Photo/93.png)<jupyter_code>class Fan:
    def __init__(self):
        self.__speed=int(1)#设定私有型整形数据域
        self.__on='False'#设定布尔数据域
        self.__radius=float(5)#设定私有浮点数据域
        self.__color=str('color')#设立私有字符串数据域
    def fengshan1(self):
        self.__speed1=int(3)#给风扇速度赋值
        self.__on1='open'#赋值风扇是否是打开状态
        self.__radius1=float(10)#给风扇半径赋值
        self.__color1=str('yellow')#表明风扇颜色
        print('速度：',self.__speed1)
        print('状态：',self.__on1)
        print('半径：',self.__radius1)
        print('颜色：',self.__color1)
    def fengshan2(self):
        self.__speed2=int(3)#给风扇速度赋值
        print('速度：',self.__speed2)#以下均为无需赋值的默认值
        print('状态：',self.__on)
        print('半径：',self.__radius)
        print('颜色：',self.__color)
n=Fan()
n.fengshan1()
n.fengshan2()<jupyter_output>速度： 3<jupyter_text>- 4![](../Photo/94.png)![](../Photo/95.png) - 5![](../Photo/96.png)<jupyter_code>class LinearEquation:
    def __init__(self):
        print('方程式为：ax+by = e')#方程形式
        print('方程式为：cx+dy = f')#方程形式
    def get(self):
        a = eval(input('请输入a为：'))#输入值
        b = eval(input('请输入b为：'))#输入值
        c = eval(input('请输入c为：'))#输入值
        d = eval(input('请输入d为：'))#输入值
        e = eval(input('请输入e为：'))#输入值
        f = eval(input('请输入f为：'))#输入值
        x = (d*e-b*f)/(a*d-b*c)#  计算
        y = (a*f-e*c)/(a*d-b*c)#计算
        if a*d-b*c==0:#判断
            print('无解')
        else:
            print('解为','x-',x,'y=',y)        
n=LinearEquation()
n.get()<jupyter_output>请输入a为：1
请输入b为：3
请输入c为：4
请输入d为：3
请输入e为：2
请输入f为：4
解为 x- 0.6666666666666666 y= 0.4444444444444444<jupyter_text>- 6![](../Photo/97.png)<jupyter_code>class LinearEquation:
    def __init__(self):
        pass
    def diyitiao(self):
        x1=eval(input('请输入横坐标'))
        y1=eval(input('请输入纵坐标'))
        print('该点坐标为:',x1,y1)
        x2=eval(input('请输入横坐标'))
        y2=eval(input('请输入纵坐标'))
        print('该点坐标为:',x2,y2)
        self.k1=(y2-y1)/(x2-x1)#第一条线段斜率
        self.b1=((y1+y2)-self.k1*(x1+x2))/2#第一条直线的截距
        print('第一条线段的函数y=',self.k1,'x+',self.b1)#第一条直线的函数
    def diertiao(self):
        x3=eval(input('请输入横坐标'))
        y3=eval(input('请输入纵坐标'))
        print('该点坐标为:',x3,y3)
        x4=eval(input('请输入横坐标'))
        y4=eval(input('请输入纵坐标'))
        print('该点坐标为:',x4,y4)
        self.k2=(y4-y3)/(x4-x3)#第二条线段斜率
        self.b2=((y3+y4)-self.k2*(x3+x4))/2#第二直线的截距
        print('第一条线段的函数y=',self.k2,'x+',self.b2)#第二条直线的函数
    def jiaodiao(self):
        x=(self.b2-self.b1)/(self.k1-self.k2)#联立方程组，求出两个交点坐标的横坐标
        y=self.k1*x+self.b1#将横坐标带入第一条直线方程计算y点
        print('交点坐标为',(x,y))
    def zuihou(self):
        self.diyitiao()
        self.diertiao()
        self.jiaodiao()    
n= LinearEquation()
n.zuihou()<jupyter_output>请输入横坐标2
请输入纵坐标2
该点坐标为: 2 2
请输入横坐标0
请输入纵坐标0
该点坐标为: 0 0
第一条线段的函数y= 1.0 x+ 0.0
请输入横坐标0
请输入纵坐标2
该点坐标为: 0 2
请输入横坐标2
请输入纵坐标0
该点坐标为: 2 0
第一条线段的函数y= -1.0 x+ 2.0
交点坐标为 (1.0, 1.0)
{'fraction_non_alphanumeric': 0.16053352387757533, 'fraction_numerical': 0.03632249612957009, 'mean_word_length': 2.4846473029045644, 'pattern_counts': {'":': 0, '<': 23, '<?xml version=': 0, '>': 24, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 2, 'word_list_counts': {'cursed_substrings.json': 6, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '7', 'dir': 'jupyter-structured-clean-dedup', 'id': '416828', 'license': 'Apache-2.0', 'n_tokens_mistral': 4351, 'n_tokens_neox': 4497, 'n_words': 478, 'path': '7.23.ipynb', 'repo_name': 'qianshouxiuluo/mysql', 'size': '8397'}