def mixture_property(self, T, P, zs, ws):
<EOL>if self.method:<EOL><INDENT>if self.test_method_validity(T, P, zs, ws, self.method):<EOL><INDENT>try:<EOL><INDENT>prop = self.calculate(T, P, zs, ws, self.method)<EOL>if self.test_property_validity(prop):<EOL><INDENT>return prop<EOL><DEDENT><DEDENT>except:  <EOL><INDENT>pass<EOL><DEDENT><DEDENT><DEDENT>self.sorted_valid_methods = self.select_valid_methods(T, P, zs, ws)<EOL>for method in self.sorted_valid_methods:<EOL><INDENT>try:<EOL><INDENT>prop = self.calculate(T, P, zs, ws, method)<EOL>if self.test_property_validity(prop):<EOL><INDENT>self.method = method<EOL>return prop<EOL><DEDENT><DEDENT>except:  <EOL><INDENT>pass<EOL><DEDENT><DEDENT>return None<EOL>
r'''Method to calculate the property with sanity checking and without
        specifying a specific method. `select_valid_methods` is used to obtain
        a sorted list of methods to try. Methods are then tried in order until
        one succeeds. The methods are allowed to fail, and their results are
        checked with `test_property_validity`. On success, the used method
        is stored in the variable `method`.

        If `method` is set, this method is first checked for validity with
        `test_method_validity` for the specified temperature, and if it is
        valid, it is then used to calculate the property. The result is checked
        for validity, and returned if it is valid. If either of the checks fail,
        the function retrieves a full list of valid methods with
        `select_valid_methods` and attempts them as described above.

        If no methods are found which succeed, returns None.

        Parameters
        ----------
        T : float
            Temperature at which to calculate the property, [K]
        P : float
            Pressure at which to calculate the property, [Pa]
        zs : list[float]
            Mole fractions of all species in the mixture, [-]
        ws : list[float]
            Weight fractions of all species in the mixture, [-]

        Returns
        -------
        prop : float
            Calculated property, [`units`]