Python:面向对象

目录

一、类的定义

基本语法

 python与Java关于类的封装的区别

 自定义构造方法

Java与Python的区别

源码

同一个类多种构造函数的构建

 源码

二、魔法方法

基础部分

比较部分

与Java的区别

容器类型

三、属性管理

四、封装

基础部分

方法拓展

五、继承&多态

继承

 多态


一、类的定义

基本语法

类的定义这两种都是可以的
# class Dog(object):
#     pass

# class Dog:
#     pass
class Dog:
    name = "小黑"
    age=2

d = Dog()
print(f'name is {d.name},age is {d.age}')

 python与Java关于类的封装的区别

# python与Java关于类的封装的区别:
# python中没有的属性是可以拓展的,而Java不可以
class Dog:
    name = "小黑"
    age=2

d = Dog()
print(f'name is {d.name},age is {d.age}')
# python与Java关于类的封装的区别:
# python中没有的属性是可以拓展的,而Java不可以
d.sex ="女"
print(f'name is {d.name},age is {d.age},sex is {d.sex}')

 自定义构造方法

Java与Python的区别

在Java中:直接给对象的属性赋值是不会报错的

在python中:直接给对象的属性赋值是会报错的,如图下

 python中修改对象的属性的两种方法:

①:用对象点出要修改的属性 重新赋值

 ②:写一个方法

 但是此时会存在一个问题,在实例化对象的时候,如果没有传入参数,则会报错

 在Java中如果传入了参数则会修改为传入的参数,没有传入则会是原来的值

此时要解决该错,只需给参数设置一个默认值

源码

# 自定义构造方法
# class Dog:
#     name = "小黑"
#     age=2
#
# d = Dog()
# d.name = "旺财"
# print(f'name is {d.name},age is {d.age}')


# class Dog:
#     name = "小黑"
#     age=2
#     def __init__(self,name,age): #self 等价于Java中的this
#         self.name = name
#         self.age = age
#
# d = Dog()
# # d.name = "旺财"
# print(f'name is {d.name},age is {d.age}')

 class Dog:
     def __init__(self,name="小黑",age=12): #self 等价于Java中的this
         self.name = name
         self.age = age

 d = Dog()
 # d.name = "旺财"
 print(f'name is {d.name},age is {d.age}')

同一个类多种构造函数的构建

 源码



class Dog:
    def __init__(self,*args,**kwargs): #self 等价于Java中的this
        if kwargs.get("name") != None:
            self.name = kwargs.get("name")
        if kwargs.get("age") != None:
            self.age = kwargs.get("age")

d = Dog(name="小黑",age=13)
# d.name = "旺财"
pri
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值