Python类和对象之--类的公有和私有属性、实例化公有和私有属性以及类和函数内置属性的应用

"""
类的关键字:class
类的名称:首字母大写   Person
类的属性:公有属性和私有属性
类的方法:功能函数,可被子类继承

"""
class Person():
    height = 160
    weight = 50
    age = 20
    def run(self):
        print("跑步")

    def eat(self):
        print("吃饭")



xiaoli = Person()
print("xiaoli对象:",xiaoli) #查看xiaoli实例化对象分配的内存地址
liming = Person()
print("liming对象:",liming) #查看liming实例化对象分配的内存地址

xiaoli.run()    #实例对象操作类中的方法

liming.eat()    #实例对象操作类中的方法

print('--实例化对象属性修改--')
print('实例化对象时xiaoli的身高{}体重{}'.format(xiaoli.height,xiaoli.weight))
xiaoli.height=170
xiaoli.weight=60
print('修改实例化对象xiaoli后,xiaoli的身高{}体重{}'.format(xiaoli.height,xiaoli.weight))

print('实例化对象xiaoli时,liming的身高{}体重{}'.format(liming.height,liming.weight))


liming.height=200
liming.weight=70

print('修改实例化对象liming后,liming的身高{}体重{}'.format(liming.height,liming.weight))
print('修改实例化对象liming后,xiaoli的身高{}体重{}'.format(xiaoli.height,xiaoli.weight))


#总结:对象修改属性后,此对象访问的属性是修改后的值,其他对象访问时还是原来的值

print('--类属性修改--')

Person.height=190
Person.weight=80
zhangsan=Person()
lisi=Person()

print('修改类属性后,实例化对象xiaoli的身高{}体重{}'.format(xiaoli.height,xiaoli.weight))
print('修改类属性后,实例化对象liming的身高{}体重{}'.format(liming.height,liming.weight))
print('修改类属性后,实例化对象zhangsan的身高{}体重{}'.format(zhangsan.height,zhangsan.weight))
print('修改类属性后,实例化对象lisi的身高{}体重{}'.format(lisi.height,lisi.weight))

#总结:类属性修改后,实例化的对象访问的属性,都是修改后的值,对象修改属性后,此对象访问的属性是修改后的值


"""
构造方法:
在python类中,自带一个__init__()的特殊方法
该方法在类实例化时会自动调用,此方法可以为类实现初始化的作用
"""

print('------构造方法-----')
class Test():
    def __init__(self,name,grade,addr):
        self.name=name
        self.grade=grade
        self.addr=addr
        print('这是Test类中的构造方法__init__')
        print("""
        初始化:
        姓名:{}
        分数:{}
        地址:{}
        """.format(name,grade,addr))

    def fun1(self):
        print('执行类中fun1函数')

    def fun2(self):
        print('执行类中fun2函数')

t=Test('小小',100,'深圳')
t.fun1()
t.fun2()


#类的属性,属性有类属性,实例属性,内置属性三种
print('---类属性,实例属性,内置属性---')

class Demo():
    school='高级中学'  #类中定义的,方法以外的属性,类属性,公有
    __num=1000   #类中定义的,方法以外的属性,类属性,私有
    print('类中公有属性{},可以在类内和类外使用'.format(school))
    print('类中私有属性{},只能在类内使用'.format(__num))

    def __init__(self,name,grade,addr):
        self.name=name  #实例属性,公有
        self.__grade=grade  #实例属性私有
        self.addr=addr

    def fun1(self):
        print('类中fun1函数')
        print('类中fun1函数内使用类公有属性:{}'.format(Demo.school))
        print('类中fun1函数内使用类私有属性:{}'.format(Demo.__num))

    def fun2(self):
        print('类中fun2函数')
        Demo.school='修改后的高级中学'
        Demo.__num=1010
        print('类中fun2函数内修改类公有属性{}'.format(Demo.school))
        print('类中fun2函数内修改类私有属性{}'.format(Demo.__num))

    def fun3(self):
        print('类中fun3函数')
        print('类中fun3函数内使用公有实例属性:{}'.format(self.name))
        print('类中fun3函数内使用私有实例属性:{}'.format(self.__grade))

    def fun4(self):
        print('类中fun4函数')
        self.name='猪坚强'
        self.__grade=10
        print('类中fun4函数内修改类公有属性{}'.format(self.name))
        print('类中fun4函数内修改类私有属性{}'.format(self.__grade))



student=Demo('好美丽',100,'深圳')
student.fun1()
print('类Demo的公有属性在类外面被调用方式一:{}'.format(student.school))
print('类Demo的公有属性在类外面被调用方式二:{}'.format(Demo.school))

student.fun2()
student.school='类外面修改高级中学(方式一)'
Demo.school='类外面修改高级中学(方式二)'


print(student.school)
print(Demo.school)


student.fun3()
print('类外调用公有实例属性:{}'.format(student.name))
student.fun4()
student.name='类外修改公有实例属性name'
print(student.name)


print('类Demo的所有属性与方法:{}'.format(Demo.__dict__))
print('实例对象的所有属性和方法:{}'.format(student.__dict__))
print('打印类名:{}'.format(Demo.__name__))


"""
类的公有属性:可以在类里面任何地方被调用,上面的例子,fun1函数中就调用了类公有属性,也可以在类外面被调用。
类的公有属性调用和修改有2种方式:类名.属性名 或则 对象.属性名

类的私有属性:只能在类里面任何地方被调用,上面的例子,fun1函数中就调用了类私有属性
类的私有属性调用和修改只有一种方式:类名.属性名,fun2函数中就修改了类私有属性


公有实例属性:可以在类内任何地方被调用,上面的例子,fun3函数中就调用的公有实例属性,也可以在类外面被调用
公有实例属性调用和修改方式:在类中用self.属性名,在类外使用对象.属性名

私有实例属性:只能在类里面被调用,上面的例子,fun3函数中就调用了类私有属性
私有实例属性调用和修改方式:在类中用self.属性名,fun4函数中就修改了类私有属性

内置属性:__dict__,__name__

"""


































  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值