目录
一、类的定义
基本语法
类的定义这两种都是可以的 # 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