python基础语法05

一、类(高级)

1、类变量

(1)实例变量

类中的成员变量描述对象的属性值根据对象不同,会产生区别,称此类变量为实例变量

(2)类变量

类中的成员变量描述对象的属性值根据对象不同,不会产生区别,称此类变量为类变量

类变量是归属类的,实例变量是归属对象的

2、定义格式:

class 类名:

    变量名 = 值

3、调用格式

赋值:

类名.变量名 = 值

取值:

类名.变量名(推荐)

对象名.变量名(不推荐)

修改值:

类名.变量名 = 值2

注意:

1、类变量推荐使用类名访问

2、类变量修改只能通过类名修改,使用对象修改类变量是创建了新的对象变量

3、类变量可以私有化

4、类方法

(1)定义格式
class 类名:

    @classmethod

        def 方法名(cls,参数列表):

            方法体

(2)调用格式

类名.方法名(实参列表)推荐

对象名.方法名(实参列表)

案例:

class Chinese:
    contry = "中国"
    def __init__(self,id_num,name):
        self.id_num = id_num
        self.name = name
    #类方法cls补全
    @classmethod
    def show_contry(cls):
        print("我是中国人")
    # 成员方法,self补全
    def show(self):
        print(self.name)

c = Chinese("440111199011232737","郑帅")
c.show_contry()#可以打印我是中国人  不推荐!!!
Chinese.show_contry()#可以打印我是中国人

(3)注意事项

1、类方法中不允许使用实例变量和实例方法

2、实例方法中允许使用类变量和类方法

案例1:

# 演示实例方法调用类成员
class Chinese:
    # 类成员
    contry = "中国"

    def __init__(self, id_num, name):
        self.id_num = id_num
        self.name = name

    # 类方法cls补全
    @classmethod
    def show_contry(cls):
        """类方法调用实例成员"""
        print("我是中国人")

    # 成员方法,self补全
    def show(self):
        """实例方法中调用类的成员"""
        print(self.name)#打印实例成员
        print(Chinese.contry)#打印类成员
        Chinese.show_contry()#打印类方法


# 演示实例方法调用类成员
c = Chinese("440111199011232737", "郑帅")
c.show()

输出:

-------------------------------------

郑帅

中国

我是中国人

案例2:

class Chinese:
    # 类成员
    contry = "中国"

    def __init__(self, id_num, name):
        self.id_num = id_num
        self.name = name

    # 类方法cls补全
    @classmethod
    def show_contry(cls):
        """类方法调用实例成员"""
        print("我是中国人")
        print(self.name)#没self
        self.show()#没self

    # 成员方法,self补全
    def show(self):
        """实例方法中调用类的成员"""
        print(self.name)#打印实例成员
        print(Chinese.contry)#打印类成员
        Chinese.show_contry()#打印类方法



# 演示类方法调用实例成员
c = Chinese("440111199011232737", "郑帅")
Chinese.show_contry()

报错:

(4)类方法中第一个参数理解误区

有@classmethod描述后的方法才是类方法

其他的方法类似

def show(cls):
    """实例方法中调用类的成员"""
    print(cls.name)#打印实例成员

由于没有类方法的描述,因此这个以cls为形参的方法还是实例方法!切记!!!

5、静态方法

(1)定义格式

class 类名:

    @staticmethod

        def 方法名(形参列表):

            方法体

(2)调用格式

类名.方法名(实参列表)

对象名.方法名(实参列表)

(3)特点

静态方法与类无关,可以将其转换成函数使用。

6、面向对象名称总结

class User:
    contry = "类变量"
    _title = "私有变量,类变量"  #只能类的内部使用

    def __init__(self):
        self.name = "公有变量"
        self._age = "公有变量,私有变量"
        info = "局部变量"

    def test(self):
        self.address = "公有变量"
        email = "局部变量"

u = User()
u.gender = "独有变量" #对象的时候定义的变量

city = "全局变量"
info = "全局变量"

def test():
    info = "局部变量"
    global city #全局变量
    city = "全局变量"
#---------------------------------------------------------------------------------
class User:
    #构造方法,创建对象属性
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def instance_mathod(self,info):
        message = "你好"
        print("实例方法")

    @classmethod
    def class_method(cls,info):
        message = "你好"
        print("类方法")

    @staticmethod
    def static_method(info):
        message = "你好"
        print("静态方法")

二、继承

继承是一种类间关系,描述一个类从另一个类获取成员信息的类间关系。

继承必定发生在两个类之间,参与继承关系的双方称为父类和子类。

父类提供成员信息,子类获取成员信息。

1、格式

(1)定义格式:

class 类名(父类名):

    pass

 (2)作用

继承父类的成员变量和方法

(3)注意

子类可以添加父类没有的成员

父类私有成员不可被继承

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值