Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #197482
| Path | csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail |
|---|---|
| From | Mats Wichmann <mats@wichmann.us> |
| Newsgroups | comp.lang.python |
| Subject | Re: Dynamic classes |
| Date | Mon, 19 May 2025 15:49:53 -0600 |
| Lines | 47 |
| Message-ID | <mailman.64.1747691398.3008.python-list@python.org> (permalink) |
| References | <CAApdmf3UwA6zf2-eSfd=1U=Unx3-6PUj6+XS0Sp62rkn73C8iQ@mail.gmail.com> <385fb601-4061-4785-809a-94ee1e6c4e11@wichmann.us> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=UTF-8; format=flowed |
| Content-Transfer-Encoding | 7bit |
| X-Trace | news.uni-berlin.de 1LsXnNvFcyyQ4opnZE3X0g1Lab5fXla1VOqYHJLshkAA== |
| Cancel-Lock | sha1:IkEEfUo3jAFyao1AZoOQIQ7kiXI= sha256:S2+j76NLljNaeHOeFFYEJLHRugVTRbZFvVhuRG5Hu+w= |
| Return-Path | <mats@wichmann.us> |
| X-Original-To | python-list@python.org |
| Delivered-To | python-list@mail.python.org |
| Authentication-Results | mail.python.org; dkim=pass reason="2048-bit key; unprotected key" header.d=wichmann.us header.i=@wichmann.us header.b=RRu+uADn; dkim-adsp=pass; dkim-atps=neutral |
| X-Spam-Status | OK 0.042 |
| X-Spam-Evidence | '*H*': 0.92; '*S*': 0.00; 'def': 0.04; 'fails': 0.09; 'account)': 0.16; 'init': 0.16; 'instance': 0.16; 'received:10.202': 0.16; 'received:10.202.2': 0.16; 'received:internal': 0.16; 'received:messagingengine.com': 0.16; 'unpacking': 0.16; 'variables,': 0.16; 'wrote:': 0.16; 'to:addr :python-list': 0.20; "i've": 0.22; 'skip:_ 10': 0.22; 'done': 0.28; 'header:User-Agent:1': 0.30; 'blog': 0.30; 'present': 0.30; '"",': 0.32; 'python-list': 0.32; 'subject:Dynamic': 0.32; 'but': 0.32; 'header:In-Reply-To:1': 0.35; 'following': 0.35; 'using': 0.37; 'class': 0.37; 'something': 0.39; 'try': 0.40; 'similar': 0.63; 'skip:m 20': 0.63; 'rate': 0.67; 'accept': 0.67; 'name,': 0.75; 'btw': 0.84; 'stating': 0.84; 'ancient': 0.91; 'received:103': 0.91 |
| DKIM-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=wichmann.us; h= cc:content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1747691395; x=1747777795; bh=bT8PfqDS6Q6m6xtZGgqoVNd8rs5HijANxO8q/92Rlr0=; b= RRu+uADnZnHSRfPe6cQYVBD5xhQrbL5TodhFwA5u4AM4KTPMr8XUBxKGHnNYq9Wi OCSnm9F3mQwpCJ21aYa5U8KoxKjkjXok11l16XoxV9z1RiwV/2LTCUFb/HHvD82h LytkC+NQNPtGv5fdTkvnsC9nHjR9PQLMwDK+rOqtB6828bOef8lRLQV8bhTu05Ro fpczC5TA1gKvZ5stigMBmbhSHlmg28sMBWF9gPwY4CMqn5EDAinzLE+fmPftKIV2 1/sepKiyC5EYWLzEHyjb4RaK04t+cdzXnImzu8Ssgm0VLU8G70iqAMB5+NYs14fk lIet1dBD9CegrKYR+6X7Bw== |
| DKIM-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm3; t=1747691395; x=1747777795; bh=b T8PfqDS6Q6m6xtZGgqoVNd8rs5HijANxO8q/92Rlr0=; b=iptrjNV3yZcvUMyLc OOhXD8hAVwTQE+jc78nGq0FB/ctjxPPuV8vF7PaiDdUyVg8NuXnKfn/iy8AQHMVP r4whmWxK+1VvTyVmUNGzHJNJXA7qiMJShY1cwYsOmhfLBcY6473eM+/+Mc0K1Fts aOe35cIQKSjQeoakIO8EHNn8ZOLhtZJeEwyHNlMTAE9s2M2js4PWdVEEraUzEury 8FZR8O0uSHNUXVjmmtmgPWPULrnHF0zCBYzP+ToE4S0swyrqlIDvNAAz5RxVHgpS 1Wh/wPLiRkCGmWeHsgE/T5VQFuy7wn0lfXWGTrKwO6XVXoohOIv0dkdYYRnppArn ZIwEw== |
| X-ME-Sender | <xms:gqcraE9Yb_jyT24I7CIin6zARF2xyx8_Fi5j5cCxv9CnMh7ia_B6NQ> <xme:gqcraMuviQMzSCx46tIdZBhvCPeQEfGRvPKOP-10eAO7ponHhchV2jDB03plpXj2b D-huxlgQSmT-luIGGg> |
| X-ME-Received | <xmr:gqcraKCTFEYx6g8DIRJZLrFypvTk4gT3M5OmR2YLdX_vUxlFaDKNC3-OP0qYAChk0bZZBzNuJHNUtnKjWu_8HeTDHnSYkQY6MQ> |
| X-ME-Proxy-Cause | gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdefvddvhedtucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucenucfjughrpefkff ggfgfuvfhfhfgjtgfgsehtjeertddtvdejnecuhfhrohhmpeforghtshcuhghitghhmhgr nhhnuceomhgrthhsseifihgthhhmrghnnhdruhhsqeenucggtffrrghtthgvrhhnpedtje duveeiteegteejgeehiedufeekgfdvjefgvedtteduffeuieelieevtdegffenucevlhhu shhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmrghtshesfihitg hhmhgrnhhnrdhushdpnhgspghrtghpthhtohepuddpmhhouggvpehsmhhtphhouhhtpdhr tghpthhtohepphihthhhohhnqdhlihhsthesphihthhhohhnrdhorhhg |
| X-ME-Proxy | <xmx:g6craEcHyG899kWH3I8GtjPWAtYKTXhTT-7zDqAsTInwvkdf2hTOBA> <xmx:g6craJOnbNLRwQJQrBz_J5FowIViVSN0gDuHI7gpCLiHiLSNJDvZ_A> <xmx:g6craOkHPK15yQ00NvqRTa3oTDS6Whmxsh8hFbwtThTmpkqJaKTOfA> <xmx:g6craLtFFH3yJPJfVy1PmDAe8uBxzL7_R44AETJq7XtlMkYsLMZXUQ> <xmx:g6craMfCurPcdT5USWxqvy4SHK_NjPmFfBN-IHnXYAGZXnE9J1uLfLKi> |
| Feedback-ID | i387144f0:Fastmail |
| User-Agent | Mozilla Thunderbird |
| Content-Language | en-US |
| Autocrypt | addr=mats@wichmann.us; keydata= xsDiBD9xp6oRBAC1vd3YI8Gcr1CxpV1gldNQu0uQsNaICDk+Ai3+R163s/P83JOYG+SBEA3P v7iZx70qpQ3RzP7KrjF1Nm6j0em9ccUX2fPQUCAxXw5Hiq7CSMiwQQZRI6shcnyMh9XTKViT WK5MrKDyvjDEn7epjKzKwPS5SG039l6XaOKU0A4uGwCgsNqUQqC0gMMcbKlJV8ql58iKmbMD /ii8FPQrXmyS/FnsPs7UddV5qMHKm7NUH5oiKuMVyakInRyq9iIxuu3D4Ec6mWRKcGsjmIkW HXCSz0aefs6dsqNqpU54cYioJ3wP5LzHK7oclgJPryVt5Qezbdutf8SQf8gVkaNIlkxwGUzi bKTZ6CHzwlz9nNgeel0XPUcZzFxGA/4paeCg2rMSVuAhUQbsLYHu4XzTs9P16zaXkrtxc4m5 b+BF5xsLgTpyO5l859XudS2Gp+7/Y37dAU4QlyGGOboWmF1y9U5DnzBwG8ghsnym+ga58MJh LdRdQQ6xQolCpEXOuzm40f2r5uMxF3KOJ7WpIPuGAkeCPru9BmlATH+zOs0gTWF0cyBXaWNo bWFubiA8bWF0c0B3aWNobWFubi51cz7CYQQTEQIAIQIbAwYLCQgHAwIDFQIDAxYCAQIeAQIX gAUCT0VyZwIZAQAKCRDAMaCQc9hUxiZBAJ9cWziGp7hVfsu5T+cQptc3rLNndQCgrZh8u5LW BfJ5e/Y+3PwZ8UEm+ELOwE0EP5is8BAEAMtwzcA8TYf5UTjDMgwcSNoErTc9ag+IX05QFgL8 aF8sfJRv5atcitqQy0gSIsOzI+L/AFdPN/+QQI3dL1tCq14t32KPDtigDhzm6jVPXX5z+V9u xnD8XTp+ZvNcWoHXjViM8aXeLLEiCpiVCho307h3XShvqoKINWRQWeAsKKDDAAMFA/48zaey wiiEyvI0meJ1KkNHxdLP0yLODr1WV6j9xkPkLWOaIDw7dlwEOlF1N1YtZ2wa0p1wsttdIbIx ffgwXmcH4zrdxUIMz3U0BqYzk5H+5cYFXECXTFVOmweS+JECYMj80PjRoKCO1eVO1N30zksB 36NnhZWPRWIhjK3ZarIYH8JGBBgRAgAGBQI/mKzwAAoJEMAxoJBz2FTG6VEAoKDYHfDp5Q3q PuPvPahCE9HsXMgAAJ9INTqcLSJrOfyJ8q95nBO1T26H2Q== |
| In-Reply-To | <CAApdmf3UwA6zf2-eSfd=1U=Unx3-6PUj6+XS0Sp62rkn73C8iQ@mail.gmail.com> |
| X-BeenThere | python-list@python.org |
| X-Mailman-Version | 2.1.39 |
| Precedence | list |
| List-Id | General discussion list for the Python programming language <python-list.python.org> |
| List-Unsubscribe | <https://mail.python.org/mailman/options/python-list>, <mailto:python-list-request@python.org?subject=unsubscribe> |
| List-Archive | <https://mail.python.org/pipermail/python-list/> |
| List-Post | <mailto:python-list@python.org> |
| List-Help | <mailto:python-list-request@python.org?subject=help> |
| List-Subscribe | <https://mail.python.org/mailman/listinfo/python-list>, <mailto:python-list-request@python.org?subject=subscribe> |
| X-Mailman-Original-Message-ID | <385fb601-4061-4785-809a-94ee1e6c4e11@wichmann.us> |
| X-Mailman-Original-References | <CAApdmf3UwA6zf2-eSfd=1U=Unx3-6PUj6+XS0Sp62rkn73C8iQ@mail.gmail.com> |
| Xref | csiph.com comp.lang.python:197482 |
Show key headers only | View raw
On 5/19/25 09:51, Jonathan Gossage via Python-list wrote:
> I have created a dynamic class using the type() function:
> x = type('MyFlags', (), {'Flag1': 1, 'Flag2': 2, 'Flag3: 4, ' '__init__' :
> __init__})
> The new class is there, and the class variables, Flag1, Flag2, and Flag3,
> are present correctly. However, when I try to create an instance of this
> class with the following code:
> y = x('Flag1', 'Flag2')
> it fails with a TypeError stating that 'MyFlags' does not accept arguments.
> What do I have to do to make this happen?. BTW __init__(self, *args) is
> defined as the instance initializer.
Might help if you show the init function. I've done something similar to
this without trouble, but not using the unpacking (i.e. *args). I used
this in an ancient blog post (thus, pre-typing, and such):
def transact(acct, amount):
acct.balance += amount
def pay_interest(acct):
acct.balance += acct.balance * acct.interest_rate
def account_init(acct, num, name, bal, rate):
acct.acct_number = num
acct.acct_holder = name
acct.balance = bal
acct.interest_rate = rate
account = {
"acct_number": "XXX",
"acct_holder": "",
"balance": 0.0,
"interest_rate": 0.0,
"transact": transact,
"pay_interest": pay_interest,
"__init__": account_init,
}
AccountType = type("AccountType", (), account)
myaccount = AccountType("1234567", "J. Q. Public", 20.0, 0.01)
print(myaccount.balance)
myaccount.transact(-10)
print(myaccount.balance)
myaccount.pay_interest()
print(myaccount.balance)
Back to comp.lang.python | Previous | Next | Find similar
Re: Dynamic classes Mats Wichmann <mats@wichmann.us> - 2025-05-19 15:49 -0600
csiph-web