gpt4 book ai didi

python - 类实例没有用于在类外部传递对象的属性 'function_name' - python

转载 作者:行者123 更新时间:2023-11-30 23:17:20 26 4
gpt4 key购买 nike

我的类结构是这样的。

class A():
def __init__(self):
self.matched_condition_set = set()

def add_to_matched_condition(self,condition):
self.matched_condition_set.add(condition)

class B():
def __init__(self, list_of_A):
self.list_of_a = list_of_A

def do_stuff(self):
for a in self.list_of_a:
if helper.check_for_a(a):
print(a.matched_condition_set)

在一个名为 helper.py 的文件中,我有以下函数。

def check_for_a(a):
print(type(a))
a.add_to_matched_condition("hello")
return True

现在如果我调用 B 类对象,我明白了:

A instance has no attribute 'add_to_matched_condition'

。当我尝试在辅助方法中获取 >> print(type(a)) 的类型时也是如此。我得到类型<'实例'>。物体在哪里丢失?

最佳答案

我不知道为什么你会得到A instance has no attribute 'add_to_matched_condition';你的代码在 Python 2.6.4 上对我来说工作正常

要在类上获得更有用的类型签名(以及其他好处),您需要使它们继承自object

这是我对您的代码稍作修改的版本,说明了这一点;它还显示了我如何测试您的类(class)。

#!/usr/bin/env python

import helper

class A(object):
def __init__(self):
self.matched_condition_set = set()

def add_to_matched_condition(self,condition):
self.matched_condition_set.add(condition)

class B(object):
def __init__(self, list_of_A):
self.list_of_a = list_of_A

def do_stuff(self):
for a in self.list_of_a:
if helper.check_for_a(a):
print(a.matched_condition_set)


a1 = A(); a2 = A()
b = B([a1, a2])

print a1, a2
print b, b.list_of_a

b.do_stuff()

print a1.matched_condition_set
print a2.matched_condition_set

输出

<__main__.A object at 0xb758f80c> <__main__.A object at 0xb758f84c>
<__main__.B object at 0xb758f86c> [<__main__.A object at 0xb758f80c>, <__main__.A object at 0xb758f84c>]
<class '__main__.A'>
set(['hello'])
<class '__main__.A'>
set(['hello'])
set(['hello'])
set(['hello'])

关于python - 类实例没有用于在类外部传递对象的属性 'function_name' - python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27351385/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com