A question about funcation parameter and self defined object

Chris Rebert clp at rebertia.com
Wed Oct 8 20:50:37 EDT 2008


On Wed, Oct 8, 2008 at 4:36 PM, Wei Guo <weiguo6 at gmail.com> wrote:
> Hi,
>
> I defined a class called vec3 which contains x, y, z and in another
> function, I tried to call a function which takes a vec3 as a parameter, but
> it seems that parameter is passed as a generic object and I can not access x
> , y, z in my vec3. Could anyone help me with that?

Being dynamically typed, Python has no notion of variables having
types, so the object isn't being "passed as a generic object", you're
getting what really is a "generic object" value of type NoneType,
which means the value of traV is indeed None, not vec3().

>
> class vec3:
>     def __init__(self, x_ = 0.0, y_ = 0.0, z_ = 0.0):
>         self.x = x_
>         self.y = y_
>         self.z = z_
> class mat4:
>          def translation( traV = vec3() ):
>               tranM.rowLst[index][0] = traV.x
> AttributeError: 'NoneType' object has no attribute 'x'

This code is perfectly fine. See below.

>
> Could anyone help me how to turn the traV as type of vec3() instead of
> NoneType object?

That's not what's happening. It's not like traV is being cast to
NoneType thus making x inaccessible, as that's not even possible to
express in Python.
What's happening is something is calling translation() with None as an
argument, and of course None (the value the caller provided for traV)
has no attribute 'x', hence the error. So, check the full exception
traceback and see who's calling translation() and how the argument
being passed to it got to be None.

Cheers,
Chris
-- 
Follow the path of the Iguana...
http://rebertia.com

>
> Thanks a lot,
>
> Wei
> --
> http://mail.python.org/mailman/listinfo/python-list
>
>



More information about the Python-list mailing list