Python classmethod 修饰符

Python类中,@ classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,以用来调用类的属性,类的方法,实例化对象等。
但是在类的其他函数中被调用时依然需要用self,如下类:

class ToMysql:
    def __init__(self, sql_host, sql_user, sql_passwd,sql_db_name):
        self.sql_connect=pymysql.connect(host=sql_host,
                                        user=sql_user,
                                        password=sql_passwd,
                                        db=sql_db_name,
                                        charset='utf8mb4',
                                        cursorclass=pymysql.cursors.DictCursor)
   
    @classmethod
    def build_table_sqlStr(cls, table_name, fields_info, keys, prim_key=None):
    	pass
    def sql_createTable(self, table_name, fields_def, prim_keys, keys):
        self.sql_connect.ping(reconnect=True)
        with self.sql_connect.cursor() as cursor:
            table_desc = self.build_table_sqlStr(
                table_name, fields_def, keys, prim_keys) #@classmethod修饰符函数在类中被其他函数调用时依然需要使用self
            cursor.execute(table_desc)

在类外调用时不需要先对类进行实例化,可以使用类名直接调用,如:

ToMysql.build_table_sqlStr(table_name, fields_info, keys)

(发牢骚:面向对象的程序语言,关于类里面的各种封装学的乱七八糟……)
类似的有成员函数、类函数(classmethod)、静态函数(staticmethod) (⊙o⊙)…

你可能感兴趣的:(Python类,python,class,类)