introspection

    -1熱度

    1回答

    我正在用Python編寫遊戲。玩家角色和敵人角色是Person的實例。角色可以擁有類別Power的權力。當角色在戰鬥中使用權力時,Power對象需要知道誰擁有權力(爲了應用權力所帶來的效果)。我如何讓Power對象知道其Person是誰? 一個明顯的解決方案是包含一個存儲對Person的引用的創建參數。但是,這有幾個問題;一種是Power的任何方法都可能需要訪問該變量,這會變得很尷尬,因爲我已經將

    1熱度

    2回答

    當一個類被另一個類擴展時,是否有一種方法可以在Python中執行某些代碼?更確切地說,我想自動保存所有擴展基類的類的註冊表。因此,我想寫這樣的東西: class Base: subclasses = {} @classmethod def extending(cls, subclass): cls.subclasses[subclass.__name_

    19熱度

    5回答

    假設o是一個Python對象,我希望所有字段的o,沒有任何方法或__stuff__。如何才能做到這一點? 我已經試過了諸如: [f for f in dir(o) if not callable(f)] [f for f in dir(o) if not inspect.ismethod(f)] 但這些回報一樣dir(o),大概是因爲dir給出一個字符串列表。此外,像__class__這樣

    1熱度

    1回答

    我一直有興趣沿着下面的代碼行來使用東西到 自動化我的對象的構建(因爲有很多屬性有很多屬性): MyObject *myObject = [[myObject alloc] init]; unsigned int numberOfProperties = 0; objc_property_t *propertyArray = class_copyPropertyList([MyObject c

    0熱度

    1回答

    我知道在Python,給定的一類ClassA,與 inspect.getmembers(ClassA, predicate=inspect.ismethod) 我可以遍歷存在於ClassA的不同方法。還收集了繼承的方法,這對我來說很方便。但是,我需要的是,給定ClassA的特定方法method1,以獲得繼承ClassA的類method1。它可能是ClassA本身,或者它的任何父母/祖父母。我以

    2熱度

    1回答

    我有一個cx_Oracle.Connection的一個實例調用x和我試圖printx.clientinfo或x.module並獲得: attribute 'module' of 'cx_Oracle.Connection' objects is not readable (這是什麼奇怪的是,我可以做打印x.username) 我仍然可以做dir(x)成功,我沒有時間看cx_Oracle的源代碼(很

    0熱度

    1回答

    我有一個單元測試: - (void)testFetchTrackByTrackIdIsATrack { [self addTrackWithSongId:@"123"]; Track *fetchedTrack = [self.library trackByTrackId:@"123"]; assertThat(fetchedTrack, instanceOf([T

    0熱度

    1回答

    我有一個奇怪的問題,這可能是不可能的,但值得一提的是,如果有任何PHP內部的書呆子知道如何去做。有沒有辦法從PHP中的函數調用中獲取變量名?它會更容易舉一個例子: function fn($argument) { echo SOME_MAGIC_FUNCTION(); } $var1 = "foo"; $var2 = "bar"; fn($var1); // outputs

    2熱度

    1回答

    我正在使用redis店鋪構建限速修飾器,這些存儲器將識別不同端點上的不同限制。 (我意識到這裏有一些限速裝飾器,但我的使用案例不同,以至於自己推出它是有意義的。) 基本上,我遇到的問題是確保我存儲的密鑰在redis中是特定於類的。我使用在瓶中的藍圖模式,基本上是這樣的: class SomeEndpoint(MethodView): def get(self): # Resp

    3熱度

    1回答

    我試圖迭代Moose對象的屬性,打印屬性的值而不調用任何惰性構建器(儘管在屬性值存在時打印)。 到目前爲止我的代碼看起來像: for my $attr ($object->meta->get_all_attributes) { my $name = $attr->name; # Lazy attributes that have not already been genera