小编gen*_*na2的帖子

尝试设置对象属性时,“str”对象不可调用

有这样的对象

class testDec(object):
    def __init__(self):
        self.__x = 'stuff'
    @property
    def x(self):
        print 'called getter'
        return self.__x
    @x.setter
    def x(self, value):
        print 'called setter'
        self.__x = value
Run Code Online (Sandbox Code Playgroud)

为什么我不能设置属性__x?这是一个追溯

>>> a.x
called getter
'stuff'
>>> a.x(11)
called getter
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object is not callable
Run Code Online (Sandbox Code Playgroud)

我正在使用 2.7.6 Python

python properties

3
推荐指数
1
解决办法
1692
查看次数

将自身传递给装饰器对象

有这样的装饰物对象

class wait_for_page_load(object):

    def __init__(self, driver, time_to_wait=20):
        self.driver = driver
        self.time_to_wait = time_to_wait

    def __call__(self, function):
        @functools.wraps(function)
        def wrapper(*args):
            old_page = self.driver.find_element_by_tag_name('html')
            function(*args)
            WebDriverWait(self.driver, self.time_to_wait).until(staleness_of(old_page))
        return wrapper
Run Code Online (Sandbox Code Playgroud)

我想将其应用于另一个类的方法,如下所示:

class VehiclePage(object):

    def __init__(self, driver):
        self.driver = driver

    @wait_for_page_load(self.driver)
    def open(self):
        self.driver.get('%s/vehicles/' % BASE_URL)
Run Code Online (Sandbox Code Playgroud)

这给我一个错误。有没有办法传递self.driver给装饰器?

python decorator python-2.x python-decorators

2
推荐指数
1
解决办法
4666
查看次数