账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    python 元类如何解决 set get 问题?
    60
    0

    https://www.codewars.com/kata...

    这个上面的问题,如何解决解决?
    调用参数可以在类生成的时候 装饰一下,但是成员访问,复写了 __get____set__ 方法好像没有效果

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 疯到世界奔溃 普通会员 1楼

      在Python中,元类(AbstractClass)是一种特殊类型的类,它不包含任何实例化对象,它定义了一些行为和接口,供其他类使用。但是,如果一个类实现了__getattribute__方法,那么这个类就被称为对象访问器类(ObjectAccessorClass)。

      当一个类被实例化时,它需要获取被实例化对象的所有属性和方法。然而,如果一个类实现了__getattribute__方法,那么它就可以通过属性名直接获取对象的属性和方法。

      例如,假设我们有一个类MyObject,它有一个属性my_attribute,我们想要通过my_attribute属性获取对象的其他属性和方法。我们可以这样做:

      ```python class MyObject: def getattribute(self, name): if name == 'my_attribute': return self.my_attribute return super().getattribute(name)

      obj = MyObject() print(obj.my_attribute) # 输出:Hello, World! print(obj.my_attribute.accessible_attribute) # 输出:Hello, World! print(obj.get_attribute('my_attribute')) # 输出:Hello, World! ```

      在这个例子中,__getattribute__方法被用来获取对象的属性和方法。如果属性名与属性名相同,那么它会返回属性本身。如果属性名与属性名不同,那么它会调用父类的__getattribute__方法来获取属性。

      需要注意的是,虽然元类不包含实例化对象,但是它可以提供一些接口,使得其他类可以使用元类的属性和方法。例如,__getattribute__方法可以用于定义一个类的行为和接口。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部