在Python中拆分数据?

在Python中拆分数据?,python,function,class,oop,attributes,Python,Function,Class,Oop,Attributes,它不起作用。我想在代码行属性中拆分数据 class movie_analyzer: def __init__(self,s): for c in punctuation: import re moviefile = open(s, encoding = "latin-1") movielist = [] movies = moviefile.readlin

它不起作用。我想在代码行属性中拆分数据

class movie_analyzer:
    def __init__(self,s):
        for c in punctuation:
            import re

            moviefile = open(s, encoding = "latin-1")
            movielist = []
            movies = moviefile.readlines()
  
    def lines(movies):
        for movie in movies:
                if len(movie.strip().split("::")) == 4:
                    a = movie.strip().split("::")
                    movielist.append(a)

        return(movielist)

movie = movie_analyzer("movies-modified.dat")

movie.lines
它还说:


要调用函数,请将
movie.lines()
与参数一起使用。您所做的只是访问方法声明。另外,确保在方法定义中使用self作为参数,并保存希望对象具有的参数。通常,将导入内容放在文件的开头是一种很好的做法

import re

class movie_analyzer:
    def __init__(self,s):
        for c in punctuation:    
            moviefile = open(s, encoding = "latin-1")
            self.movielist = []
            self.movies = moviefile.readlines()

    @property
    def lines(self):
        for movie in self.movies:
                if len(movie.strip().split("::")) == 4:
                    a = movie.strip().split("::")
                    self.movielist.append(a)

        return self.movielist

movie = movie_analyzer("movies-modified.dat")

movie.lines()

您可以使用
@property
decorator来访问方法的结果作为属性。请看这个关于如何使用此装饰器的非常简单的示例:

import random

class Randomizer:
    def __init__(self, lower, upper):
        self.lower = lower
        self.upper = upper
    
    @property
    def rand_num(self):
        return random.randint(self.lower, self.upper)
然后,您可以这样访问它:

>>> randomizer = Randomizer(0, 10)
>>> randomizer.rand_num
5
>>> randomizer.rand_num
7
>>> randomizer.rand_num
3
显然,这是一个无用的例子;但是,您可以将此逻辑应用于您的情况

另外,还有一件事:您没有将
self
传递到
。您可以传递
电影
,这是不需要的,因为您可以使用
self.movies
访问它。但是,如果要使用
self
访问这些变量,则必须设置(在
\uuuuu init\uuuu
方法中):


谢谢,它是这样运行的。但我想把它当作电影来运行。我应该如何更改代码?我在编辑时考虑了@gmdev给出的答案。让我知道它是否有效,如果有效,请接受答案似乎没有什么理由让它成为一个类,而不是一个简单的函数。
self.movielist = []
self.movies = moviefile.readlines()