python类与对象

本文深入探讨了Python中的类和对象,包括类方法、实例方法、类变量和实例变量的使用规则。通过示例解释了如何在不同方法中调用这些元素,强调了静态方法和私有方法的特点。还介绍了类的继承和封装概念,展示了如何通过继承实现代码复用和权限控制。此外,通过具体的代码示例展示了如何在实际编程中应用这些概念。
摘要由CSDN通过智能技术生成

类方法里面可以调用其它类方法
类方法里面可以调用类变量

对象方法里面可以调用类变量
对象方法里面可以调用类方法
对象方法里面可以调用其它对象变量
对象方法里面可以调用其它对象方法


静态方法里面不能调用类变量和类方法,也不能调用对象方法和对象变量

私有方法需要用对象方法调用

构造函数里面不带self.的变量只能在构造函数内使用

构造函数主要用来在创建对象时完成对对象属性的一些初始化等操作

python中的类和对象
类:具有相同的属性和方法的对象集合
举例:张三、李四属于人类的对象
共同属性:1个头、2只手、2只脚
共同方法:睡觉、吃饭、花钱

举例:笔记本电脑、台式电脑属于电脑类的对象
共同的属性:显示器、都有开机键
共同的方法:都可以上网

对象:某一个类真实存在的实例
实例化:根据类创建对象的过程称之为实例化

类和对象:类方法、实例方法、类变量、实例变量

类变量:定义在类里面、函数外

装饰器:在不改变函数功能的基础上添加新的功能


class People(object):         #定义一个People类、object是基类、父类、超类
    def __init__(self,name):  #构造函数(作用:根据类创建对象时做初始化的) 实例化时会自动调用构造函数
        self.name = name      #实例变量
    header = 1                #定义一个类变量

    '定义一个类方法(需要使用到装饰器@classmethod)'
    @classmethod        #装饰器
    def test(cls):
        print('会睡觉')

    '定义一个实例方法'
    def func1(self):    #self代表对象本身
        print('会砍柴')

    '定义一个实例方法'
    def func2(self):
        print('会拉煤')

    def func3(self):
        print('{}去北京砍柴'.format(self.name))
p1 = People('张三')  #根据People类生成一个p1对象
# p2 = People()  #根据People类生成一个p2对象
'对象可以调用实例方法'
# p1.func1()
# p2.func2()

'类不能调用实例方法'
# People.func1()

'对象可以调用类变量'
# print(p1.header)    #运行结果为:1

'类调用类变量'
# print(People.header)  #运行结果为:1

'对象可以调用实例变量'
# print(p1.name)          #运行结果为:张三

'类不能调用实例变量'
# print(People.name)

# p1.func3()     #运行结果为:张三去北京砍柴
'''
备注:
1、类变量和类方法是公有的,类和对象都可以调用
2、实例变量和实例方法是私有的,只有对象可以调用
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

//
class Num():
    a = 1    #类变量
    def __init__(self,i):
        self.i = i  #实例变量
    '定义类方法'
    @classmethod
    def func1(cls):
        return 8


    @classmethod
    def func2(cls):
        value = cls.func1()  #类方法可以调用其他类方法
        print(value)    

    def func3(self):
        print('多测师')

    '定义一个实例方法'
    def func3(self):
        # print(self.a+1)  #对象方法可以调用类变量
        # print('这是一个实例方法')
        value = self.func1() #对象方法可以调用其他对象方法
        print(value)   

    '定义一个静态方法'
    @staticmethod
    def func4():    #静态方法不可以调用类的变量和方法,也不可以调用对象的变
量和方法
        print('这是一个静态方法')
    '''
    备注:
    1、静态方法是类里面的一个普通方法,既不是实例方法也不是类方法
    2、定义静态方法需要使用到装饰器@staticmethod
    3、静态方法没有cls或self修饰
    4、静态方法里面既不可以引用类变量和实例变量也不可以调用类方法和实例方

    '''
n = Num(1)
n.func3()   #2   #多测师

/
'''
备注:
1、类变量和类方法是公有的,类和对象都可以调用
2、实例变量和实例方法是私有的,只有对象可以调用
'''
print(id(People))
p = People       
print(id(p))
'''
备注:实例化时类不加括号相当于赋值,所以打印p和People的id指定的是同一内
存地址
2223720310792
2223720310792
'''

print(id(People))
p = People       
print(id(p))
'''
备注:实例化时类必须加括号,才称之为创建对象,对象和类指向的是不同的内存
地址
2513161119928
2513167783808
'''
2513161119928
2513167783808

'封装一个读取文件中所有内容的公共方法'
# def get_file_value(file):
#     f = open(file,'r')
#     value = f.read()
#     print(value)


# 封装一个读取文件的公共方法(默认读取所有,读取任意行数)
'二次封装'
def get_file_value(file,star_index=None,end_index=None):
    f = open(file,'r')
    value = f.readlines()
    for i in value[star_index:end_index]:
        print(i)

'封装一个读取文件中所有内容的公共方法'
def get_file_value(file):
    f = open(file,'r')
    value = f.read()
    print(value)

# 封装一个读取文件的公共方法(默认读取所有,读取任意行数)
def func(file,x=None,y=None):
    f=open(file,'r')
    if x==None or y==None:
        print(f.read())
    else:
        print(f.readlines()[x:y])

func(r'C:\Users\Administrator\Desktop\test.txt',1,4)

# class Phone():
#     '定义一个私有方法'
#     def __call100(self):
#         print('正在打电话')
#
#     def  func1(self,money):
#         if money > 0:
#             self.__call100()
#         else:
#             print('您的余额不足,请充值后在拨打电话')
#
# '''
# 封装:
# 1、将属性或方法设为私有的
# 2、私有属性或方法外部无法直接调用
# '''
# p = Phone()
# p.func1(1)    #运行结果为:正在打电话
# p.func1(0)    #运行结果为:您的余额不足,请充值后在拨打电话


class People():
    name = '小七'
    __age = '18'
    __phone = '18389581559'

    def get_age(self,user):
        if user == '陈':
            return self.__age
        else:
            return '滚犊子'

    def get_phone(self,user):
        if user == '周':
            return self.__phone
        else:
            return '想都别想'

# print(People.name)     #运行结果为:小七
print(People().get_age('陈'))  #运行结果为:18
print(People().get_phone('周')) #运行结果为:18389581559
///
'python中类的继承'
class Grand_Father():
    def __init__(self,n):
        pass
    def dcs1(self):
        print('爱下棋')

    def dcs2(self):
        print('爱喝茶')

class Father(Grand_Father):
    # def __init__(self,user):
    #     pass
    def func1(self):
        print('爱抽烟')

    def func2(self):
        print('爱看美女')

    def func3(self):
        print('爱打麻将')


class Son(Father):    #Son类继承Father类
    # def __init__(self,name):
    #     pass
    def func4(self):
        print('爱学习')

    def func5(self):
        print('爱敲python')

s = Son()
s.func1()    #运行结果为:爱抽烟
s.func4()    #运行结果为:爱学习


'''
1、子类继承父类后可调用父类的所有方法
2、子类继承父类后,父类无法调用子类的方法
3、当子类和父类同时拥有构造函数函数时,默认使用子类自己的构造函数
4、当子类没有构造函数时,父类拥有构造函数,子类默认继承父类的构造函数
5、当子类同时继承多个父类时,优先使用自己的构造函数,如果子类没有构造函
数则继承父类的构造函数
6、当子类同时继承多个父类时,优先继承第一个父类的构造函数,如果第一个父
类没有构造函数,则继承第二个父类
7、子类同时继承多个父类时,可以调用多个父类的方法
8、当父类继承其他类时,子类可以调用父类和父类继承的类方法
'''

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值