找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
""""""
"""类:
万物皆对象:
类---(手机,人类,动物类---概括性很广)
对象---(对象是类的实例个体)
每一个物体都可以称为对象
当前我有一个手机类(包含有各式各样的手机),对象就是手机的实例,
苹果14,华为mate40,小米12,锤子手机,都是手机类的实例对象

共同的方法:打电话,拍照,发短信  手机共有的方法
     属性:硬件的配置cup,内存,摄像头,屏幕


python 用 class定义一个类():包含具有一些共有的属性和方法
        方法:函数
        属性:变量

用来组织函数和属性

"""
# class MyPhone():
#     def dadianhua(self):
#         print("这是一个打电话的方法")
#
#     def faduanxin(self):
#         print("这是一个发短信的方法")
#
#     def test(self):
#         print("这是一个卫星定位的功能")
#
#     def test01(self):
#         print("这是一个拍照的功能")
#
# MyPhone().test() # 当前手机类调用类当中的方法
# MyPhone().dadianhua()

# 通过对象具体实例调用类当中的方法


# 实例化对象就是,创建对象的过程叫做实例化
# iphone14 = MyPhone()  # 实例化一个对象
# mate30 = MyPhone()  # 实例化一个对象
#
# print(iphone14,mate30)
# # 对象也可以调用类当中的功能
# iphone14.dadianhua()
# mate30.faduanxin()


""" 类就是一个容器,可以组织一个共有的方法和属性进行管理
对象就是当前类单独的个体,也可以调用类当中的方法
实例化:实例化对象,创建对象的过程叫做实例化
对象:类的实例个体
方法:类当中的函数
属性:类当中的变量
    第一种类变量:类当中共享的值。
    第二种实例变量:只是当前的实例对象可以调用的变量
    第三种私有变量
"""

"""类当中的属性:
    类变量:
"""
# class MyPhone():
#     number = 1000
#     age = "18"
#     name = "张三"
#     """这些定义的变量称之为类变量"""
#
# print(MyPhone().number)
# iphone14 = MyPhone()
# print(iphone14.name)


# class MyPhone():   # 这里的括号不能定义形参

    # 通过init的函数方法帮他去完成形参的定义

    #也是一个初始化的功能,每次调用这个类的时候,都会先去初始化init的类型重新赋值
#     def __init__(self,name,age,number):
#
#         self.number = number
#         self.name = name
#         self.age = age
#
# iphone14 = MyPhone(name="苹果",age="20",number="10000")
# mate30 = MyPhone(name="华为",age="23",number="20000")
# # 在调用前的类的过程中   ,name,age,number
# print(iphone14.name)
# print(mate30.name)



""" 类 当中的self他就是类的对象,也就是实例对象本身。带self参数的
方法变量:说明当前的方法变量是属于实例对象的,所以这样的方法也称为
实例变量,实例方法"""
# class MyClass():
#
#     def __init__(self):
#         print(self)
#
#     def func(self):
#         print(self)
# a = MyClass()
# print(a)
# a.func()
"""
    <__main__.MyClass object at 0x00EBAEB0>
    <__main__.MyClass object at 0x00EBAEB0>
"""




# class MyClass():
#     __age = "武汉多测师"
#     number = "wuhanduoceshi"
#     def __init__(self,host,user,password,database,port=3306):
#         self.host=host
#         self.user=user
#         self.password=password
#         self.database=database
#         self.port=port
#
#     def func(self):
#         print(f"host 的参数{self.host}\n",
#               f"user 的参数{self.user}\n",
#               f"password 的参数{self.password}\n",
#               f"database的参数 {self.database}\n",
#               f"port的参数{self.port}\n",
#               f"类变量的属性{self.number}\n"
#               f"私有变量的属性{self.__age}\n")  # 引用私有变量
# a = MyClass("192.168.2.36","root","123456","dcs20")
# a.func()

# MyClass("192.168.2.36","root","123456","dcs20").func()
# print(MyClass("192.168.2.36","root","123456","dcs20").number)
# print(MyClass("192.168.2.36","root","123456","dcs20").__age)  # 报错,因为__age是私有变量

""" 类当中:方法函数分为多种:
实例方法:
    1.()当中第一个参数默认是self
    2.实例方法可以被类对象进行调用
    3.实例方法可以使用类变量,和实例变量
类方法:需要通过装饰器  @class method 装饰器进行定义
     装饰器@classmethod 就是进行功能拓展和属性赋予的
    1.类方法需要通过装饰器进行修饰
        (装饰器分为类装饰器,和函数器
            作用:1.可以给当前的函数和类拓展新的功能
                2.可以给档期啊你的函数和类进行属性的赋予)
    装饰器本身就是一个函数,或者是一个类
    2.可以被类或者对象直接进行引用
    3.函数当中的第一个参数默认是cls
    4.类方法可以引用类变量,但是不能使用实例变量


静态方法:
    1.需要通过装饰器进行修饰,staticmethod装饰修饰
    2.静态方法不能使用类变量
    3.静态方法不能使用实例变量
    4.静态方法中没有默认的形参,静态方法可以被类和对象
    直接进行调用
私有方法:
    定义规则使用双下划线开头

私有变量:当前的变量只能在类当中进行使用,不能在外部进行访问,只属于当前的
        类本身。__开头

"""
# class MyClass():
#     number = 100
#     def __init__(self):
#         self.name = "张三"
#         self.age= "18"
#
#     def test01(self):
#         print(f"这是一个实例方法:类变量:{self.number} 实例变量{self.name}")
#
#
#     @classmethod
#     def test02(cls):
#         print(f"这是一个类方法:引用类变量{cls.number} ")
#
#     @staticmethod
#     def test03():
#         # MyClass().__test04()  #在类的内部使用类直接调用
#         a = MyClass()  # 在类的内部当中使用,实例化对象进行调用
#         a.__test04()
#         print("这是一个静态方法,引用变量 ")
#
#     def __test04(self):
#         print(f"这是一个私有方法.引用类变量{self.number} 实例变量{self.name} ")


# a = MyClass()
# a.test01()  # 实例方法可以引用类变量和实例变量
# a.test02()  # 类方法只能引用类变量,不能引用实例变量
# a.test03()
# a.__test04

"""类的封装  mysql"""
# import pymysql
#
# class MySqlDb():
#
#     """用来封装mysql数据的常用操作"""
#
#     def __init__(self, host, user, password, database, port=3306):
#         self.host=host
#         self.user=user
#         self.password=password
#         self.database=database
#         self.port=port
#
#     def connect_db(self):
#         """用来链接数据库的对象"""
#         db = pymysql.connect(host=self.host,user=self.user,
#                              password=self.password,
#                         database=self.database,port=self.port)
#         cursor = db.cursor()
#         return db
#
#     def select_sql(self,sql):
#         # 获取
#         cursor = self.connect_db().cursor()
#         cursor.execute(sql)
#         print(cursor.fetchall())
#
#     def update_sql(self,update_sql,select_sql):
#         cursor = self.connect_db().cursor()
#         cursor.execute(update_sql)
#         db = self.connect_db()
#         db.commit()
#         cursor.execute(select_sql)
#         print(cursor.fetchall())
#
#     def delete_sql(self,delete_sql,select_sql):
#         cursor = self.connect_db().cursor()
#         cursor.execute(delete_sql)
#         db =self.connect_db()
#         db.commit()
#         cursor.execute(select_sql)
#         print(cursor.fetchall())
#
#     def insert_sql(self,insert_sql,select_sql):
#         cursor = self.connect_db().cursor()
#         cursor.execute(insert_sql)
#         db=self.connect_db()
#         db.commit()
#         cursor.execute(select_sql)
#         print(cursor.fetchall())
#
# mysql = MySqlDb(host="192.168.33.36",user="root",password="123456"
#                 ,database="dcs20",port=3306)
# mysql.select_sql("select * from dept;")
# mysql.update_sql("update dept set dept_name = 'hasd' where dept1 = 105;"
#                  ,"select * from dept;")
# mysql.delete_sql("delete from dept where dept1=105","select * from dept")

# mysql.insert_sql("insert into dept values(100,'li')","select * from dept")


"""python :类的继承:
当前子类继承父类的方法和属性:、

注意:继承属性:如果当前的子类没有构造函数,会默认继承父类的构造函数方法
如果当前子类有构造函数方法,需要通过super类重写构造函数方法

__init__ :构造函数,__init__ 属于魔术方法的一种:。
注意点:如果当前的父类和子类都有相对的属性,那么字相当于重写了父类的方法


"""

# 父类                # 之前的版本默认需要填(object 也是一个类)
# class Myclass():      #括号当中填写继承的类
#     def __init__(self):
#         self.name = "张三"
#         self.age = 18
#
#     def youqian(self):
#         print("余额:10000000000.00")
#
#     def fangzi(self):
#         print("十来套房产")

# # 妈妈
# class MyClass1():
#     def a(self):
#         print("有别墅")
# # 爷爷
# class MyClass2():
#     def che(self):
#         print("法拉利")


# 儿子类
# class TestCase(Myclass,MyClass1,MyClass2):
#     def __init__(self):
#         super().__init__()  # super是个超类,通过super重写当前的构造函数
#         self.wuhan = "湖北"    # 重写构造函数,重新定义构造函数
#         self.name = "李四"
#     def yougongsi(self):
#         print("十几家上市公司")
#     def youchezi(self):
#         print("地库停满了")

# TestCase().fangzi()
# TestCase().yougongsi()

# 如果当中的子类没有构造函数的方法,默认继承父类的构造函数方法
# print(TestCase().name)
# print(TestCase().wuhan)
# TestCase().a()



class Test01():
    def boy(self,values):
        print("男一"+values)
class Test02(Test01):
    def boy(self,values):
        print("男二"+values)
class Test03():
    def boy(self, values):
        print("男三" + values)

a = Test01()
b = Test02()
c = Test03()
a.boy("女一")
b.boy("女二")



"""多态:相同名称的方法有多种形态
    1.有多个类,这些类当中都具有相同的方法,但是根据不同类执行不同的结果。
    2.基于继承关系,重写父类的方法,a 有boy,b也有boy,他不会继承a的方法
    而是重新定义boy这个方法


"""















分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册