Python----函数、类的定义、封装及调用

'''
封装:
    把乱七八糟的数据扔进列表里面,这是数据层面的封装
    把常用的代码段打包成一个函数,这是语句层面的封装
    把数据和代码打包成一个对象,这也是封装

对象的特征称为“属性”,对象的行为称为“方法”,即: 对象 = 属性 + 方法
从代码层面看,“属性”就是变量,“方法”就是函数,将定义的这些称为类(class)
对象叫做这个类的一个实例(instance),也叫实例对象(instance object)
'''

# 类名约定用大写字母开头,含 class 表明定义一个类
class Gm():
    str = "这是一个类属性(类变量)"
    # 函数名用小写字母开头,含 def 表明定义一个函数
    def instancefunc(self):
        print("这是一个实例方法")
        print(self)

    @classmethod            # 该装饰器用来标识为类方法,可以访问类属性
    def classfunc(cls):     # 第一个参数必须是类对象(cls.)
        print("这是一个类方法")
        print(cls)

    @staticmethod           # 该装饰器用来标识为静态方法,不可以访问类属性
    def staticfunc():       # 形参没有 self 或 cls
        print("这是一个静态方法")

# Gm1(继承类)是子类,Gm(被继承的类)是基类、父类或超类。
# 一个子类可以继承分类的任何属性和方法。
# 若子类中定义与父类同名的方法或属性,则会自动覆盖父类对应的方法或属性
class Gm1(Gm):
    pass

# 调用
test = Gm()         # 初始化一个Gm的对象(创建一个Gm对象),即test是Gm的实例对象
print(test)
print("**************************************")
test.instancefunc()         # 对象调用实例方法
test.classfunc()            # 对象调用类方法
test.staticfunc()           # 对象调用静态方法
print("**************************************")
print(test.str)
print("**************************************")
Gm.staticfunc()             # 类调用静态方法
Gm.classfunc()              # 类调用类方法
Gm.instancefunc(test)       # 类调用实例方法,需要带参数

 

 

实例方法:

 

class Gm():
    str = "这是一个类属性(类变量)"

    def __init__(self, st):
        self.st = st

    def instancefunc(self):
        print("这是一个实例方法")
        print(Gm.str)
        print(self.st)
        print(self.str)
        print(self)

if __name__ == '__main__':
    test = Gm("abc")
    print(test)
    print(test.str)
    print(test.st)
    test.instancefunc()

 

 

  

 

posted @ 2020-06-04 15:17  给自己一个改变的理由  阅读(4673)  评论(0编辑  收藏  举报