对象嵌套和魔术方法

对象嵌套

把对象作为另外一个对象的参数传递给方法或者变量。

class A:
	def __init__(self,name,age):
		self.name = name
		self.age = age
class B:
	lst = []
	def add_list(self,obj):
		self.lst.append(obj)
	def for_by_A(self):
		for i in self.lst:
			print(i.name,i.age)
a1 = A("张三", 1)
a2 = A("李四", 11)
a3 = A("王五", 111)
b = B()
b.add_list(a1)
b.add_list(a2)
b.add_list(a3)
b.for_by_A()

魔术方法

在Python的类中存在一些特殊的方法,这些方法都是 __方法__ 格式,这种拥有特殊功能的方法统称为魔术方法
-_init_,初始化方法,用于加载类初始化数据用的,没有需要初始化的数据时可省略不写

class A:
	def __init__(self):
		pass
  • __new__构造方法,对象创建时会调用此方法,此方法会创建一个空对象返回给__init__函数调用
class A:
	def __new__(cls, *args, **kwargs):
		pass
  • __call__方法,用于重载(),可以使得对象通过()执行方法
class A:
	def __call__(self,name):
		print(name)
a = A()
a("lose") # lose
  • __str__方法:当使用print输出对象的时候,只要自己定义了__str__(self)方法,那么就会打印从在这个方法中return的数据
class A:

	def __str__(self):
		return "0"
a = A()
print(a)  # "0"
  • __dict__:该属性可以用类名或者类的实例对象来调用,用类名直接调用 dict,会输出该由类中所有类属性组成的字典;而使用类的实例对象调用 dict,会输出由类中所有实例属性组成的字典。
  • __getitem____setitem____delitem__
  • __enter____exit__
  • __add__
  • __iter__:迭代器
    • 类中定义了__iter__ 和 _next_ 两个方法。
    • _iter_ 返回一个可迭代对象(迭代器本身self也是可迭代的)
      -\ next 方法,定义返回的下一个数据,如果没有数据了,则需要抛出一个StopIteration的异常。
  • 生成器:是一个特殊的迭代器,它内部申明了_iter_ 和 _next_ 方法
  • 可迭代对象:如果一个类中有__iter__方法且返回一个迭代器对象 ;则我们称以这个类创建的对象为可迭代对象。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值