gpt4 book ai didi

python - 实例化时如何引用传递给我的类的对象?

转载 作者:行者123 更新时间:2023-12-04 17:04:22 25 4
gpt4 key购买 nike

我有这个类

class SECHeader(object):
def __init__(self,header_path):
self.header = open(header_path).read()

我在这个类中有一些方法,我尝试做的方法之一需要解析名称
        def parsed_name(self):
return header_path.split('-')[-1]

如果在我的代码中我使用名称 header_path 来标识我试图操作的东西,这很好用
for header_path in header_paths:
header = SECHeader(header_path)
print header.parsed_name()

但如果我改变名字
for named_path in header_paths:
header = SECHeader(named_path)
print header.parsed_name()

我收到一个 NameError

我玩过 - 如果可以在 parsed_name 函数中为对象使用任何名称,只要我对要处理的对象使用相同的名称,但我似乎无法弄清楚如何命名它以便用户没有使用我的命名方案

特别是如果我将 parsed_name 函数更改为
        def parsed_name(self):
return banana.split('-')[-1]

在我的循环中,如果将其更改为
for banana in header_paths:
header = SECHeader(banana)
print header.parsed_name()

它的作用就像一个魅力,但这限制了我正在研究的这个东西的便携性。因为任何用户都必须使用我在函数中使用的任何标签来引用路径。

最佳答案

这里的问题是您将 header_path 声明为 的变量。初始化 功能。它的范围是本地的 初始化 功能。

您需要的是将 header_path 关联为类实例的变量。

Class SECHeader(object):
def __init__(self,header_path):
self.header_path = header_path # Instantiate a variable for class object
self.header = open(header_path).read()

def parsed_name(self):
return self.header_path.split('-')[-1] # Call the associated variable

另一种方法是在 parsed_name 中实际调用您作为参数提供给 SECHeader 的变量。这个变量名将在类命名空间中。
for banana in header_paths:
header = SECHeader(banana)
print header.parsed_name()

Class SECHeader(object):
def __init__(self,header_path): # header_path takes value of banana
# and ends scope in __init__
self.header = open(header_path).read()

def parsed_name(self):
return banana.split('-')[-1] # banana was passed to class and is known

关于python - 实例化时如何引用传递给我的类的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18090364/

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